☰
this指针
2026/10/1 5:39:45 网站建设 项目流程

一、概念是链式编程(Method Chaining)的核心概念

二、例子详解

Person&PersonAddAge(Person &p) {this->age+=p.age; //this指回p2的指针,而*this指回的就是p2这个对象本体 return*this;}

为什么需要返回引用?

1.效率考虑

  • 返回引用:不创建新对象,直接操作原对象

  • 返回值:会创建临时副本(拷贝构造),效率低

2.支持链式调用

// 如果不返回引用,而是返回值: Person PersonAddAge(Person &p) { this->age += p.age; return *this; // 返回的是副本! } p2.PersonAddAge(p1).PersonAddAge(p3); // 第二次调用是在临时对象上,不是原来的p2!

3.差别:

1)void版本的函数

void PersonAddAge(Person &p) { this->age += p.age; // 只能执行一次操作,不能连续调用 }

使用方式:

p2.PersonAddAge(p1); // 执行完就结束了 p2.PersonAddAge(p3); // 需要再写一行

2)Person&版本的函数

Person& PersonAddAge(Person &p) { this->age += p.age; return *this; // 返回对象本身的引用 }
使用方式(链式调用):
p2.PersonAddAge(p1).PersonAddAge(p3).PersonAddAge(p4); // 可以连续调用,从左到右执行

三、总结

返回类型特点能否链式调用
void只执行操作❌ 不能
Person返回副本⚠️ 可以但操作的是副本
Person&返回自身引用✅ 可以且操作原对象

关键点:

  • 返回引用是为了操作原对象,不是创建新对象

  • 链式编程让代码更简洁、可读

  • *this返回的是当前对象的引用

  • 这是面向对象编程中常见的设计模式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询