首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。
注意:
1、this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。this指针的类型取决于使用this指针的成员函数类型以及对象类型,
2、this只能在成员函数中使用。全局函数,静态函数都不能使用this。
3、this在成员函数的开始执行前构造的,在成员的执行结束后清除。
4、this指针只有在成员函数中才有定义。在全局变量和静态函数中不能使用
#include <iostream> #include <memory> using namespace std; class test1 { public: test1() { }; ~test1() { }; int GetNum() { //this是指向当前test1这个类的指针,this指针也可以用来初始化变量 this->a = 10; this->b = 0; return (*this).a; } //私有变量可以被类内的所有成员函数调用 private: int a; int b; }; int main() { { test1 p1; cout << p1.GetNum() << endl; } system("pause"); return 0; }
参考博客:https://www.cnblogs.com/zhangruilin/p/5769843.html