欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}

注:

 

  1. 任何自定义名为this的参数或变量的行为都是非法的
  2. 因为this总是指向“这个”对象,故this是一个常量指针