this指针

xiaoxiao2021-03-01  56

当类的某个成员函数涉及到两个类对象(类定义的对象)的时候,需要使用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指针,并通过该指针来处理对象。

转载请注明原文地址: https://www.6miu.com/read-4549933.html

最新回复(0)