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

【c++】拷贝构造函数

1.特征

1.拷贝构造函数是构造函数的一个重载形式。

2.若显示定义了拷贝构造函数,编译器就不会自动生成构造函数了。

3.拷贝构造函数的参数只有一个且必须是类型对象的引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。

4.若未显式定义,编译器会生成默认的拷贝构造函数。默认的拷贝构造函数对象按内存存储的字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。

2.举例

c++语法规定在自定义类型传值传参时会调用拷贝构造。所以在定义拷贝构造函数时需要引用,否则会引发无穷递归调用。

另外为了保护对象中的内容不被修改,建议在前面加上const。

当然,如果我们没有显示定义一个拷贝构造函数,编译器会帮我们自动生成一个。

这个自动生成的拷贝构造函数会帮我们把基本的数据拷贝过来,也就是浅拷贝。当一个类中有指针且这个指针指向的空间存在数据的话,这个自动生成的拷贝构造函数也会原封不动的拷贝过去,当其中一个对象的指针指向的空间被释放掉,另一个类中的指针就会成为野指针。所以遇到这类情况需要深拷贝,不能依赖编译器了。

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

相关文章:

  • 17.3.1.2 曝光
  • 【Win10 触摸板】在插入鼠标时禁用触摸板,并在没有鼠标时自动启用触摸板。取消勾选连接鼠标时让触摸板保持打开状态,但拔掉鼠标后触摸板依旧不能使用
  • 排序算法---桶排序
  • FPGA_工程_基于rom的vga显示
  • 代码随想录算法训练营第31天|● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
  • 无人机地面站技术,无人机地面站理论基础详解
  • 2024.2.13
  • 论文阅读:四足机器人对抗运动先验学习稳健和敏捷的行走
  • .NET Core WebAPI中封装Swagger配置
  • 28. 找出字符串中第一个匹配项的下标
  • 宿舍|学生宿舍管理小程序|基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)
  • CVE-2022-25487 漏洞复现
  • C#面:强类型和弱类型
  • nodejs和npm和vite
  • 相机图像质量研究(24)常见问题总结:CMOS期间对成像的影响--摩尔纹
  • Redis -- 数据库管理
  • 蓝桥杯(Web大学组)2023省赛真题:视频弹幕
  • 真假难辨 - Sora(OpenAI)/世界模拟器的技术报告
  • Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试
  • ctfshow-web21~28-WP
  • 鸿蒙开发系列教程(二十四)--List 列表操作(3)
  • 线性代数笔记2--矩阵消元
  • 透光力之珠——光耦固态继电器的独特特点解析
  • C#系列-​​​​​​​EntityFrameworkCore.Transactions.Abstractions应用场景+实例(38)
  • PMDG 737
  • 深入探索Midjourney:领航人工智能的新征程
  • ChatGPT高效提问—prompt实践(漏洞风险分析-重构建议-识别内存泄漏)
  • 【AIGC】Stable Diffusion 的提示词入门
  • 力扣---通配符匹配
  • Rust 原生类型