C++学习笔记之this指针
程序员文章站
2022-07-12 15:38:53
...
假设有这样一个类
//类声明
class Data{
string getName() const { return name;}
string name;
};
//类的实例化
Data var;
string str=var.getName();
上面发生了什么?
通过类Data的对象var调用它的成员函数getName(),函数内部又返回了var的数据成员name,实际上隐式地返回了var.name
怎么做到的?
成员函数getName()通过一个名为this的额外的隐式参数来访问调用它的对象var,在调用时,用该对象的地址赋予this,也就是
var *this=&var,this本质上是个指针。
//实质有个隐式的形参
string getName(Data *this)
{
return name;
}
//调用成员函数时(伪代码)
string getName(&var)
{
return this->name;
}
注:
- 任何自定义名为this的参数或变量的行为都是非法的
- 因为this总是指向“这个”对象,故this是一个常量指针
上一篇: springboot快速入门学习之论坛项目01(长期更新)
下一篇: 老妈聊天纪录一览