C++返回this指针

C++的this指针相当于Python中的self,

主要看一下下面这段代码:

#include<iostream>
using namespace std;

class Person
{
public:
	Person(int age)
	{
		this->age = age;
	}
	Person &PersonAddPerson(Person p)//这里不加&55行加完第一次就变成另一个对象了(返回的只是p的副本(拷贝构造的以值的方式返回局部对象,看下拷贝函数的调用时机那一节)(传值)),所以结果不能累计,所以为20
	{
		this->age += p.age;
		return *this;
	}
	int age;
};

void test01()
{
	Person p1(10);
	cout << "p1.age = " << p1.age << endl;
	Person p2(10);
	p2.PersonAddPerson(p1).PersonAddPerson(p1).PersonAddPerson(p1);//链式编程思想
	cout << "p2.age = " << p2.age << endl;
}

int main()
{
	test01();
	system("pause");
	return 0;
}

主要难点:

1、成员函数PersonAddPerson返回的是*this

2、其函数名前有一个&

3、加&和去掉&导致p2.age的结果不同

自己的理解:

1、this指针指向对象,而*this指针解引用就代表这个对象,所以我们使用p2.PersonAddPerson(p1)返回的结果就是*this也就是p2对象

2、函数名前加一个&意思是返回引用类型,具体可以看(3条消息) C++中函数名字前的&或*_流楚丶格念的博客-CSDN博客_c++ 函数&

看下面这段代码就明白了:

 

 

 3、不加&的话PersonAddPerson函数的返回值是以值得类型返回局部对象,只是返回了一个副本相当于返回p2'(相当于只传了值,却换了个对象,有点形参和实参的区别那味,也有点拷贝构造函数那味)

参看下面这段代码也可以发现,以值传递的方式返回局部对象只是反悔了其副本

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值