使用引用返回类对象本身

cpp 复制代码
#include<iostream>
#include<ctime>
using namespace std;
class Person
{
public:
	//Person()
	//{
	//	cout << "构造函数调用"<<endl;
	//}
	Person(int age)
	{
		this->age = age;
		cout << "有参构造函数调用" << endl;
	}
	Person(const Person& p1)
	{
		this->age = p1.age;
		cout << "拷贝构造函数调用" << endl;
	}
	~Person() {
		cout << "析构函数被调用" << endl;
	}
	int age;
	//f
	Person addAge(const Person &p) //使用引用传递类对象 节省空间
	{
		this->age += p.age;
		return *this;//返回正在操作的对象 为链式编程提供条件
	}
};
Person test01()
{
	Person p1(18);
	Person p2 = p1;
	//p2.addAge(p1);
	p2.addAge(p1).addAge(p1);
	cout << p2.age << endl;
	return p2;
}

int main()
{
	test01();
	return 0;
}

其中

cpp 复制代码
	Person addAge(const Person &p) //使用引用传递类对象 节省空间
	{
		this->age += p.age;
		return *this;//返回正在操作的对象 为链式编程提供条件
	}
cpp 复制代码
	Person& addAge(const Person &p) //使用引用传递类对象 节省空间
	{
		this->age += p.age;
		return *this;//返回正在操作的对象 为链式编程提供条件
	}

第一个函数返回一个新的Person对象,它的年龄是原Person对象的年龄加上传入Person对象的年龄,但是返回的是值类型,每次调用都会创建一个新的对象,比较浪费空间。

第二个函数返回一个对正在操作的Person对象的引用,它的年龄是原Person对象的年龄加上传入Person对象的年龄,这样可以避免创建新的对象,节省空间。此外,它还可以用于链式编程,即一个函数返回一个对象的引用,这个对象又可以调用另一个函数,依次进行链式操作。

结果:第一种方式输出36,第二种方式输出54.

相关推荐
西贝爱学习7 分钟前
【QT】安装包
开发语言·qt
徐凤年lll1 小时前
python 初学2
开发语言·python
2301_801252221 小时前
Mybatis的添加和修改功能
java·开发语言·mybatis
天选之女wow1 小时前
【代码随想录算法训练营——Day53】图论——110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
算法·深度优先·图论
艾莉丝努力练剑1 小时前
【Git:基本操作】深度解析Git:从初始Git到熟悉基本操作
大数据·linux·c++·人工智能·git·gitee·指令
安迪西嵌入式1 小时前
数据平滑处理算法03——中心移动平均
java·前端·算法
行思理1 小时前
IntelliJIdea 创建java spring boot程序
java·开发语言·spring boot
散峰而望2 小时前
C语言刷题(一)
c语言·开发语言·编辑器·github·visual studio
CN-Dust2 小时前
【C++】2025CSP-J第二轮真题及解析
开发语言·c++·算法
贝塔实验室2 小时前
译码器的结构
驱动开发·算法·网络安全·fpga开发·硬件工程·信息与通信·信号处理