如果希望成员函数对多个对象进行操作,可以将额外的对象作为参数传递给它。如果方法需要显式引用调用它的对象,则可以使用this指针。由于this指针被设置为调用对象的地址,因此*this是该对象的别名。
每个成员函数(包括构造函数和析构函数)都有一个this指针。this指针指向调用对象。如果方法需要引用整个调用对象,则可以使用表达式*this。在函数的括号后面使用const将this限定为const,这样将不能使用this来修改对象的值。
然而,要返回的并不是this,因为this是对象的地址,而不是对象本身,即*this(将解除引用运算符*用于指针,将得到指针指向的值)。
const Stock & Stock::topval(const Stock & s) const { if (s.total_val > total_val) return s; else return *this; }
括号中的const表明,该函数不会修改被显式访问的对象,而括号后的const表明,该函数不会修改被隐式地访问的对象。由于该函数返回了两个const对象之一的引用,因此返回类型为const引用。返回类型为引用意味着返回的是调用对象本身,而不是其副本。