this指针是C++中每个非静态成员函数隐式拥有的指向调用对象的指针;必须显式使用this->的场景包括:①参数与成员变量同名需消歧义,②需获取当前对象地址。

what is this pointer
this指针是C++中每个非静态成员函数自动拥有的一个隐式指针,它指向调用该函数的那个对象实例。比如有Person p;,当执行p.setName("Alice")时,setName内部的this就等于&p。它不是对象数据的一部分,所以sizeof(Person)不包含它。
什么时候必须显式写 this
两种典型场景需要你主动写出this->:
- 参数名和成员变量同名时,用来消除歧义。例如:void setAge(int age) { this->age = age; },否则age = age会被编译器当作赋值给自己,毫无意义
- 在函数内需要取当前对象的地址(比如打印调试、传给其他函数、存入容器等),直接用this即可,如cout
怎么用 this 实现链式调用
让成员函数返回*this(即当前对象的引用),就能连续调用多个函数:
- 函数声明要返回引用,比如Point& setX(int x) { this->x = x; return *this; }
- 调用时写成p.setX(10).setY(20).move(5, 5);,每一步都操作同一个对象
- 注意不能返回局部对象或临时对象,return *this安全,因为*this是调用者的左值
const 成员函数里的 this 是什么类型
在加了const修饰的成员函数末尾(如int getAge() const),this的类型会变成const ClassName*,意味着你不能通过它修改成员变量——这是编译器强制的保护机制。如果函数里既要读又要写成员,就不能加const;如果只读,加上它能让函数被常量对象调用,也更清晰表达意图。
立即学习“C++免费学习笔记(深入)”;











