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

拷贝构造函数的理解

1.拷贝构造函数与构造函数类似,当没有自定义拷贝构造函数的时候,编译器会定义一个拷贝构造函数。

当类对象没有初始化的时候,通过赋值运算符的形式,也是调用拷贝构造函数。

Test  aa(100);
Test bb = aa;//调用拷贝构造函数Test  aa(100);
Test  bb(200);
bb = aa;//此时因为对象bb已经初始化,此时调用的是赋值运算符

2.当类成员没有指针的时候,使用编译器自带的默认构造函数就可以(浅拷贝即可),当类成员有指针的时候,需要自定义拷贝构造函数,实行深拷贝。

3.拷贝构造函数的参数为引用,不能是值传递,也不能是指针传递,参考该文。

如果是值传递的话,相当于在不停的调用拷贝构造函数,造成栈溢出。参考该文​​​​​​​。

假设是值传递;Test(Test cc);Test aa(100);
Test bb = aa;//相当于 bb.Test(aa),此时aa会拷贝给临时变量cc相当于 cc.Test(aa);//此时aa又会拷贝给临时变量cccc.Test(aa);//这个过程不断的重复,造成栈溢出

http://www.lryc.cn/news/290172.html

相关文章:

  • 基于ncurse的floppy_bird小游戏
  • 创建第一个 Spring 项目(IDEA社区版)
  • VUE3动漫影视视频网站模板源码
  • Node.js-express
  • 心理学笔记——我们如何思考-思想、语言和手语
  • Matlab处理excel数据
  • 某大厂关于Linux系统相关面试题
  • Markdown(2篇文章学会Markdown
  • 多路IO复用服务器——select模型和poll模型
  • 【书生·浦语大模型实战营】学习笔记目录
  • APT32F1023X 发送RF433处理
  • 如何做一个合格的产品经理
  • Git 入门精讲
  • 论文笔记(四十二)Diff-DOPE: Differentiable Deep Object Pose Estimation
  • 设计模式:简单工厂模式
  • 老龄化对投资意味着什么?
  • 从公有云对象存储迁移到回私有化 MinIO需要了解的所有信息
  • C#颜色拾取器
  • 最长公共子串的问题(正常方法和矩阵法,动态规划)
  • Linux实验记录:使用LVM(逻辑卷管理器)
  • [设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式
  • 【国产MCU】-认识CH32V307及开发环境搭建
  • python flask request教程
  • UE5 Chaos系统 学习笔记
  • MkDocs 部署指南
  • 【Java 设计模式】行为型之访问者模式
  • 堆和堆排序【数据结构】
  • 【全程录屏GPT3.5升级4.0】2024最新GPT4升级订阅详细指南
  • 中移(苏州)软件技术有限公司面试问题与解答(4)—— virtio所创建的设备1
  • 《动手学深度学习(PyTorch版)》笔记5