400 8949 560

NEWS/新闻

分享你我感悟

您当前位置> 主页 > 新闻 > 技术开发

c++中的this指针是什么 c++ this指针用法【教程】

发表时间:2025-12-31 00:00:00

文章作者:裘德小鎮的故事

浏览次数:

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++免费学习笔记(深入)”;

相关案例查看更多