定义
成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象。当我们调用一个成员函数时,用请求该函数的对象地址初始化this。
在成员函数内部,我们可以直接使用调用该函数的对象的成员,而无须通过成员访问运算符来做到这一点,因为this所指的正是这个对象。任何对类成员的直接访问都被看作this的隐式引用。
this形参是隐式定义的。任何自定义名为this的参数或变量的行为都是非法的。
因为this总是指向“这个”对象,因此this是一个常量指针,且是一个指向非常量类类型的常量指针
类的const成员函数与this指针
类的const成员函数是在紧随参数列表之后加上const关键字,这里,const的作用是修改隐式this指针的类型。
默认情况下this是一个常量指针,且是一个指向非常量类类型的常量指针,因此,this指针不能被绑定到一个常量对象上。也就使我们不能在一个常量对象上调用普通的成员函数。
一旦将成员函数声明为常量成员函数,那么this是指向常量的常量指针,所以常量成员函数不能改变调用它的对象的内容。
赋值运算符重载返回*this
一般来说,当我们定义的函数类似于某个内置运算符时,应该令该函数的行为尽量模仿这个运算符。内置的赋值运算符把它的左侧运算对象当成左值返回,因此为了保持一致,这些定义的函数也必须返回引用类型。
从const成员函数返回*this
一个常量成员函数的this指针是一个指向const的指针而*this是const对象。因此,常量成员函数的返回类型应该是const&。即使引用返回的是左值,但是由于const的作用也无法改变返回值的值。