C++ this指针

11.4 This指针

需要定义一个成员函数,比较两个Stock变量中哪个的变量的total_val最大,并返回total_val最大的Stock对象

11.4.1 显式访问对象和隐式访问对象

const Stock & topval(const Stock & s) const;

括号中的const表明,该函数不会修改被显式地访问的对象;括号后的const表明,该函数不会修改被隐式地访问的对象。由于该函数返回了两个const对象之一的引用,因此返回类型也应为const引用。

top = stock1.topval(stock2);
top = stock2.topval(stock1);

在这里插入图片描述

11.4.2 this

当在返回值时,有这样一个问题:如何称呼那个调用成员函数的对象?stock1.topval(stock2), s是stock2的别名,但是没有stock1的别名。

针对上述问题:C++解决方案为:使用被称为this的特殊指针。this指针指向用来调用成员函数的对象。

一般来说,所有的类方法都将this指针设置为调用它的对象的地址。确实,topval()中的total_val只不过是this->total_val的缩写。

在这里插入图片描述

每个成员函数(包括构造函数和析构函数)都有一个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; // argument object
    else
        return *this; // invoking object
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jasmine-Lily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值