C++this指针
-
this是C++中的一个关键字,也是一个const指针,它指向当前对象,通过它可以访问当前对象的所有成员。
例如:
class A{ private: char name; public: void show(){cout<<"hello world~"<<endl;}; void setName(char *name){this->name = name}; } int main(){ A.show();//-------1 }
则对于A.show(),this指针指向A当前对象
-
this可以访问类的所有成员,包括private、protected、public。
-
上面第6行类中setName函数的定义,形参是name,和成员变量name重名。用this->name=name,才能对成员变量name赋值,不用this指针的话,就是对形参的赋值。
this是一个指针,需要使用->来访问成员变量或者成员函数
-
this是const指针,它的值不能被修改的。
-
this只能在成员函数内部使用,不能在其他地方使用。
-
只有当对象被创建后this才有意义,因此不能在static成员函数中使用。
普通成员变量占用对象的内存,静态成员函数没有 this 指针,因为不知道指向哪个对象,所以无法访问对象的成员变量,也就是说静态成员函数不能访问普通成员变量,只能访问静态成员变量。
-
this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。
-
在函数的编译的过程中, 添加的额外参数是当前对象的首地址,也就是this。用来连接成员函数和成员变量。