16.C++中的this指针

版权声明:本博客为记录本人学习过程而开,内容大多从网上学习与整理所得,若侵权请告知! https://blog.csdn.net/Fly_as_tadpole/article/details/82954447

在之前学习Python时,接触到self形参,它是指向类对象的一个地址。

在C++学习过程中,也有这样的机制,那就是this指针

我们在调用成员函数的时候,实际上是替类的对象调用它!成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象!当我们调用成员函数的时候,用请求的该函数的对象的地址来初始化this形参。即编译器负责把对象的地址传递给this形参。

因为this的目的总是指向这个对象,因此,this默认是常量指针!我们不允许改变this中的地址。


有时候我们为了避免调用的成员函数修改调用对象的内容,常常把这个成员函数声明为常量成员函数,常见的做法是在函数的声明之后添加const关键字!

sales_data& combine(const sales_data&) const;

默认的情况下,this的类型是指向类类型非常量版本的常量指针。即是: sales_data * const

也就是,this指针保存的地址不能改变,但是指向的对象的内容可以改变。

当我们在成员函数声明之后添加const关键字之后,就将this修改为   const  sales_data * const  避免调用的成员函数修改调用对象的内容。


定义一个返回this对象的函数

sales_data& sales_data::combine(const sales_data & rhs)
{
    units_sold += rhs.units_sold;
    revenue += rhs.revenue;
    return *this;
}

我们无须使用隐式的this指针访问函数调用者的某个具体成员,而是需要把调用函数的对象当作是一个整体来访问。return语句解引用this指针以获得执行该函数的对象。

猜你喜欢

转载自blog.csdn.net/Fly_as_tadpole/article/details/82954447