使用引用返回类对象本身

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.

相关推荐
Ulana3 分钟前
计算机基础10大高频考题解析
java·人工智能·算法
洲星河ZXH10 分钟前
Java,集合框架体系
开发语言·windows
Queenie_Charlie14 分钟前
数字去重(set)
数据结构·c++·set
宠..15 分钟前
写一个感染型病毒
开发语言·安全·安全性测试
wheelmouse778815 分钟前
一个优雅、通用、零侵入的 CSV 导出工具类(Java 实战)
java·开发语言
cike_y1 小时前
JavaWeb-Request应用与Cookie&[特殊字符]️Session
java·开发语言·安全·java安全
Ayanami_Reii1 小时前
区间不同数的个数-树状数组/线段树/莫队/主席树
数据结构·c++·算法·线段树·树状数组·主席树·莫队
李玮豪Jimmy1 小时前
Day37:动态规划part10(300.最长递增子序列、674.最长连续递增序列 、718.最长重复子数组)
算法·动态规划
大筒木老辈子1 小时前
C++笔记---并发支持库(atomic)
java·c++·笔记