当前位置: 首页 > news >正文

以*this返回局部对象的两种情况

1、以值返回局部对象

class Person {
public:Person(int age) {this->age = age;}// 以值方式返回局部对象会调用拷贝构造生成一个新的对象返回Person PersonAddPerson(Person p) {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);cout << "p2.age = " << p2.age << endl;
}

 *this指对象本身,return一个对象且以值返回,会在return时用拷贝构造函数生成一个复制品,然后返回这个复制品,其返回的对象本身并不是对象本身。 p2.PersonAddPerson(p1).PersonAddPerson(p1);而这段代码在第一次执行PersonAddPerson(p1)时返回的是另一个对象,然后拿这另一个对象再执行PersonAddPerson(p1)时,其又返回另另一个对象。

2、以引用返回局部对象

	Person& PersonAddPerson(Person p) {this->age += p.age;return *this;}

 而以引用返回局部对象时,不会调用拷贝构造函数,其返回对象本身为对象本身。

http://www.jsqmd.com/news/14307/

相关文章:

  • 2025.10.15
  • 2025秋_12
  • nginx-1.16.1-2.p01.ky10.sw_64.rpm 安装教程(详细步骤,适用于Kylin V10/申威SW64架构)
  • 第七章:C控制语句:分支和跳转
  • 感知节点@5@ ESP32+arduino+ 第三个程序FreeRTOS 上 LED灯显示 和 串口打印ASCII表
  • 【Azure App Service】App Service是否支持PHP的版本选择呢?
  • OAuth/OpenID Connect 渗透测试完全指南
  • Problem K. 置换环(The ICPC online 2025)思路解析 - tsunchi
  • Go 语言和 Tesseract OCR 识别英文数字验证码
  • Markdown转换为Word:Pandoc模板使用指南 - 实践
  • 2025年10月小程序开发公司最新推荐排行榜,小程序定制开发,电商小程序开发,预订服务小程序开发,活动报名小程序开发!
  • 数据结构-循环队列
  • C语言学习——键盘录入
  • 2025年10月软件开发公司最新推荐,软件定制开发,crm系统定制软件开发,管理系统软件开发,物联网软件开发公司推荐!
  • C语言学习——运算符的学习
  • 第十五篇
  • 数据结构-顺序栈
  • 实用指南:NXP - 用MCUXpresso IDE v25.6.136的工具链编译Smoothieware固件工程
  • Erlang 的英文数字验证码识别系统设计与实现
  • 使用Django从零开始构建一个个人博客系统 - 实践
  • 2025年磨床厂家TOP企业品牌推荐排行榜,平面磨床,外圆磨床,数控平面磨床,数控外圆磨床,7163平面磨床推荐这十家公司!
  • cifar10
  • [LangChain] 02. 模型接口
  • 摄像头调试
  • 软件工程作业-报告1 - 实践
  • WebGL学习及项目实战(第02期:绘制一个点)
  • C语言学习——小数数据类型
  • 高敏感人应对焦虑
  • kali构建PHP_MYSQL
  • Palantir本体论以及对智能体建设的价值与意义