16.C++中的this指针

本文深入解析了C++中this指针的概念及其作为常量指针的作用,探讨了如何通过添加const关键字声明常量成员函数,以防止成员函数修改对象状态。同时,介绍了返回this对象的函数实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在之前学习Python时,接触到self形参,它是指向类对象的一个地址。

在C++学习过程中,也有这样的机制,那就是this指针

我们在调用成员函数的时候,实际上是替类的对象调用它!成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象!当我们调用成员函数的时候,用请求的该函数的对象的地址来初始化this形参。即编译器负责把对象的地址传递给this形参。

因为this的目的总是指向这个对象,因此,this默认是常量指针!我们不允许改变this中的地址。


有时候我们为了避免调用的成员函数修改调用对象的内容,常常把这个成员函数声明为常量成员函数,常见的做法是在函数的声明之后添加const关键字!

sales_data& combine(const sales_data&) const;

默认的情况下,this的类型是指向类类型非常量版本的常量指针。即是: sales_data * const

也就是,this指针保存的地址不能改变,但是指向的对象的内容可以改变。

当我们在成员函数声明之后添加const关键字之后,就将this修改为   const  sales_data * const  ,避免调用的成员函数修改调用对象的内容。


定义一个返回this对象的函数

sales_data& sales_data::combine(const sales_data & rhs)
{
    units_sold += rhs.units_sold;
    revenue += rhs.revenue;
    return *this;
}

我们无须使用隐式的this指针访问函数调用者的某个具体成员,而是需要把调用函数的对象当作是一个整体来访问。return语句解引用this指针以获得执行该函数的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值