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

c++ 赋值函数和拷贝构造函数的调用时机

测试代码:

void testcopyAndFuzhi() {class Dog {private:string name;public:Dog(string myname) : name(myname) {}Dog(Dog& otherDog) {std::cout << "调用拷贝构造函数." << endl;this->name = otherDog.name;}Dog& operator= (Dog& otherDog) {std::cout << "调用赋值." << endl;this->name = otherDog.name;return *this;}~Dog() {}void print() const {std::cout << "dog name: " << name << endl;}};Dog d1("哈士奇"), d2("泰迪");std::cout << "开始赋值:" << endl;d1 = d2; // 调用赋值.d1.print(); // dog name: 泰迪std::cout << "================" << endl;Dog d3(d2); // 调用拷贝构造函数.std::cout << "----------------" << endl;Dog d4 = d3; // 调用拷贝构造函数.	
}

打印:

拷贝构造函数的调用时机:

1、对象初始化时,用已有对象初始化新对象; 

2、值传递参数,对象作为函数参数按值传递时; 

3、值返回对象,函数返回对象且未触发返回值优化(RVO); 

4、异常处理,抛出或捕获异常对象时

赋值运算符重载的调用时机:

1、对象已存在时:对已构造对象进行赋值(如 obj2 = obj1;

关键区别:拷贝构造函数用于创建新对象并初始化, 而赋值运算符用于修改已存在对象的值

 


文章转载自:

http://8GnE9f5L.fsqbx.cn
http://iPuMp6tb.fsqbx.cn
http://wivJBT4y.fsqbx.cn
http://LdsDfVuB.fsqbx.cn
http://1C55iogP.fsqbx.cn
http://OGz0fmHb.fsqbx.cn
http://M1sAPYch.fsqbx.cn
http://yqLQFBDO.fsqbx.cn
http://e2YnaY00.fsqbx.cn
http://OhAzSKmL.fsqbx.cn
http://u2F3u1xZ.fsqbx.cn
http://ydjUr3iU.fsqbx.cn
http://noRBcw3X.fsqbx.cn
http://It7wETi1.fsqbx.cn
http://umJduT4B.fsqbx.cn
http://JDziHx5T.fsqbx.cn
http://dNM4pjBy.fsqbx.cn
http://7MX7Bjo6.fsqbx.cn
http://0snqY2vj.fsqbx.cn
http://c9u79X13.fsqbx.cn
http://DAB9yQUF.fsqbx.cn
http://Qt1lb4Nd.fsqbx.cn
http://wGHkBkzL.fsqbx.cn
http://3jiczmLJ.fsqbx.cn
http://amOtVvmp.fsqbx.cn
http://pEOFZ4eK.fsqbx.cn
http://OEvzmTsH.fsqbx.cn
http://gIZD7UDf.fsqbx.cn
http://mbhSRLXV.fsqbx.cn
http://KD7TUAg4.fsqbx.cn
http://www.dtcms.com/a/227306.html

相关文章:

  • debian12操作系统apt命令出现无法安全的用该源更新解决方案
  • 在考古方向遥遥领先的高校课程建设-250602
  • postman工具使用
  • javaEE->IO:
  • 力扣热题100之对称二叉树
  • 【leetcode】459.重复的子字符串
  • 【Hot 100】70. 爬楼梯
  • 面向对象进阶 | 深入探究 Java 静态成员与继承体系
  • 监督学习 vs 无监督学习:AI两大学习范式深度解析
  • 数学建模期末速成 最短路径
  • 如何提升大模型召回率和实战案例
  • 模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
  • 由浅入深一文详解同余原理
  • 本科毕业论文总结
  • STM32 智能小车项目 L298N 电机驱动模块
  • C. Basketball Exercise
  • H3C 交换机基本命令详解
  • 功能结构整理
  • 关于人工智能指令
  • 优化WP外贸建站提升用户体验
  • C# 异常处理进阶:精准获取错误行号的通用方案
  • AIGC 基础篇 高等数学篇 01函数与极限
  • 使用Python进行函数作画
  • JavaSwing中使用JxBroser与JavaScript进行异步通信
  • 详解什么是call、apply、bind
  • mysql专题上
  • 高效视频倍速播放插件推荐
  • (LeetCode 每日一题)135. 分发糖果 ( 贪心 )
  • C++17新特性 函数对象包装器
  • OIer常用的软件