C++ 类的this指针

        (个人学习和理解,感觉很透彻了)

        this 指针是C到C++添加的新特性,空口无凭,来看一张图

比雅尼本人授课

        从图中可以知道,java语言内的this特性也是参考C++而来。可知,this特性的存在是有用的。下面我们来介绍一下:

this指针意义

        this指针依附于类的对象而存在,该指针保存了该对象的地址,这是this指针。在成员函数内this可以代指该类的对象。

        提示:就和C数据结构中的链表有相似,结构体内可以包含结构体自己的指针一样,这里只是把结构体指针换成了this,并且指向了自己。可以想象一下,结构体成员的指针变量指向自己,通过这个指针变量调用自己的其他变量,是相似的。个人看法,验证自行解决。

      在实例化类的对象时,this指针是默认生成的,指向对象的地址。友元函数没有this指针,因为友元函数为非成员函数。

为了证明我是对的

        为了证明我说的正确性,我用结构体做了验证,手机编写的不容易呢。透过this指针访问到了a变量,而不是直接使用st结构体变量。这就从根本上了解了C++来源于C,希望读者理解。我可能知道现在的简书,给钱才给推阅读量,希望吧,大家都能看到。

用this指针打印成员变量

        上图中,三种输出结果相同,怕有人不理解,再说说,第二行this是一个指针,用箭头成员获取操作符直接操作var,这是C中的功能,为了方便程序员。否则就要像第三行,先取值拿到地址,然后在用.操作符获取成员变量,非常繁琐。

      怎么说呢,石老师讲成员函数内存空间是不算在类内的,这么看来,this虽然是在类内调用了,实则是在类外的,和C结构体那个差不多,应该只是把this指针传参进函数了。函数内结构体指针修改指向的结构体变量的值不是很easy吗?我们简直都可以自己用C写个Cppp了,哈哈,就是没钱搞。

        这里再提一下,方法到底是什么,可能很多人都知道方法是函数,具体并不清楚,昨天在w3c看到方法的说明。

类方法

        非常明确的指出,方法就是属于类的函数,无论是类内实现还是类内实现,只要是类的成员函数即可。

        真的是精华,言简意赅。       

#include <iostream>

using namespace std;

class MyClass {

public:

  MyClass(int a) : var(a)

  { }

  void printInfo() {

  cout << var <<endl;

  cout << this->var <<endl;

  cout << (*this).var <<endl;

  }

private:

  int var;

};

int main() {

  MyClass obj(42);

  obj.printInfo();

}


        代码拷出来了,想试试自己搞。

        只有成员函数有this指针,也就是说,有this指针的函数就可以修改成员变量了哈哈。懂我意思了吗?懂了自己去试试,我明天试试,有结果就发出来,木有就算了。我觉得肯定有。

        差不多讲完了,再见吧。


––共享知识,迎接未来,我是美玉东番。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容