当前位置: 首页 > 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://www.xdnf.cn/news/773659.html

相关文章:

  • 【Pytorch学习笔记】模型模块06——hook函数
  • ps色彩平衡调整
  • java反序列化: Transformer链技术剖析
  • DAX权威指南6:DAX 高级概念(扩展表)、DAX 计算常见优化
  • 集成测试的流程总结
  • 【Kubernetes-1.30】--containerd部署
  • 工作日记之权限校验-token的实战案例
  • 基于Android的医院陪诊预约系统
  • 九(2).参数类型为引用结构体类型
  • css呼吸灯
  • 详细解析2MHz和3MHz压电陶瓷片的区别
  • 数据库-数据查询
  • 数学建模期末速成 多目标规划
  • 设计模式——迭代器设计模式(行为型)
  • ToolsSet之:数值提取及批处理
  • Spring Cloud 开发入门:环境搭建与微服务项目实战(上)
  • 学到新的日志方法mp
  • vue router详解和用法
  • Windows10-ltsc-2019 使用 PowerShell 安装安装TranslucentTB教程(不通过微软商店安装)
  • PCA(K-L变换)人脸识别(python实现)
  • 二进制文件配置替换工具:跨平台大小端处理实践
  • 树莓派4B串口通讯
  • 地震资料裂缝定量识别——学习计划
  • hook组件-useEffect、useRef
  • Docker 镜像原理
  • MySQL DDL操作全解析:从入门到精通,包含索引视图分区表等全操作解析
  • <6>, 界面优化
  • 基于Python学习《Head First设计模式》第三章 装饰者模式
  • 线程池详细解析(二)
  • MCP还是A2A?AI未来技术选型深度对比分析报告