版权声明:本博客为记录本人学习过程而开,内容大多从网上学习与整理所得,若侵权请告知! 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指针以获得执行该函数的对象。