当类的某个成员函数涉及到两个类对象(类定义的对象)的时候,需要使用C++的this指针。
如类Stock的某个成员函数的声明如下:
const Stock & topval(const Stock & s)const;
括号中的const表明,该函数不会修改被显式访问的对象;括号后的const表明,该函数不会修改被隐式访问的对象。由于该函数返回了两个const对象之一的引用,所以返回类型也应为const引用。
例如:
定义两个Stock对象
Stock stock1,stock2;
让stock1调用该该成员函数的语句如下
top=stock1.topval(stock2);
其中,隐式地访问stock1,显式地访问stock2。
成员函数的实现(定义)为
const Stock & Stock::topval(const Stock & s) const
{
if(s.total_val>total_val)
return s;
else
return *this;
}
this指针指向用来调用成员函数的对象,即stock1。它解决了调用该成员函数的对象(stock1)的别名问题。这样,stock1.topval(stock2)将this设置为stock1对象的地址。
每个成员函数(包括构造函数和析构函数)都有一个this指针。this指针指向调用对象.
u this指针是由C++编译器自动产生且较常用的一个隐含对象指针,它不能被显式声明。
u this指针是一个局部量,局部于某个对象。
u this指针是一个常量,它不能作为赋值、递增、递减等运算的目标对象。
u 只有非静态类成员函数才拥有this指针,并通过该指针来处理对象。