this指针

首先,类是一种抽象数据类型,也是一种数据类型,因此this指针即是指向 “调用成员函数的类对象” 的指针,解引用即得到指针指向的类对象,也可以访问类对象的成员。

只要类对象调用一个成员函数,编译器即会自动用该对象的地址初始化this指针,因此在成员函数内部,可以直接使用“调用该成员函数的类对象”的成员,而无需再使用成员访问运算符。

this指针的使用:

  1. 成员函数内部,直接使用“调用该成员函数的类对象”的成员;
  2. 返回调用成员函数的对象;
  3. 显式访问“调用成员函数的对象”的成员变量和成员函数,如 item—>bookNo (此时多用于成员变量和形参名字相同时)

//成员函数定义
sales_data& sales_data::combine(const sales_data& rhs) {
	//units_sold是调用该成员函数时,this隐式指向的成员变量,rhs.units_sold是实参类对象的成员变量
	//调用时相当于两个类对象的操作,如total.combine(trans); total为调用的对象,有this。
	//因此相当于total.units_sold += rhs.units_sold;
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;  //this指向“调用该成员函数类对象”,解引用即返回该类对象
}

若主函数中调用该成员函数

item1.combine(item2);
sales_data item1,item2;

此时item1调用combine成员函数,实参为item2。当item1调用combine时,this即指向item1对象,因此在combine成员函数内部直接使用item1的成员变量;实参为item2,先初始化形参rhs,然后需要使用成员访问运算符访问成员。


一个比较通俗的解释:

当你进入一个房子后,
你可以看见桌子、椅子、地板等,也可以擦桌子,洗地板等,
但是房子你是看不到全貌了。
对于一个类的实例来说,
你可以看到它的成员函数、成员变量,
但是实例本身呢?
this是一个指针,它时时刻刻指向你这个实例
本身

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值