【C/C++学院】(6)构造函数/析构函数/拷贝构造函数/深copy浅copy
发布日期:2025-04-29 12:41:31
浏览次数:21
分类:精选文章
本文共 853 字,大约阅读时间需要 2 分钟。
1. 构造函数
类的初始化即为构造函数,也称为隐式的初始化。构造函数在对象初始化时自动被调用,是一种隐式的调用。
构造函数主要分为三种:有参构造函数、无参构造函数和拷贝构造函数。有参构造函数的调用方式有括号法、等号法和手工法三种。
2. 析构函数
析构函数(destructor)与构造函数相反,当对象脱离其所在的函数(例如对象所在的函数已调用完毕)时,系统会自动执行析构函数。析构函数的主要作用是进行“清理善后”工作,例如在动态内存分配时,通过析构函数释放内存。
在主函数结束时,对象 stud1 和 stud2 会被“清理”,而清理的过程通过调用析构函数实现。
3. 拷贝构造函数
拷贝构造函数是一种特殊的构造函数,用于基于同一类的其他对象的构建及初始化。其形参必须是引用,通常加上 const 约束。拷贝构造函数的主要应用场景包括对象的值传递和返回。
当我们没有编写拷贝构造函数时,C++ 编译器会默认提供一个拷贝构造函数,执行浅拷贝操作。
拷贝构造函数的应用场景
通过 = 运算符进行对象初始化
当对象通过 = 运算符进行初始化时,会调用拷贝构造函数,执行浅拷贝操作。通过 拷贝构造函数符号()直接调用
当使用 拷贝构造函数符号()直接初始化对象时,也会执行浅拷贝操作。对象以值传递方式传入函数参数
当函数参数是对象时,会自动调用拷贝构造函数进行浅拷贝操作。对象以值传递方式从函数返回
当函数返回对象时,会执行拷贝构造函数进行浅拷贝操作。深拷贝与浅拷贝
在某些情况下,类内成员变量需要动态开辟内存。如果采用浅拷贝(即 A = B),则对象 A 和 B 共享同一块内存。如果 B 中有一个成员变量指针已经申请了内存,那么 A 中的那个成员变量也会指向同一块内存。这种情况下,当 B 的内存被释放时,A 的内存会变成野指针,可能导致程序运行错误。
深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程时,资源重新分配,这个过程就是深拷贝;而没有重新分配资源,就是浅拷贝。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2026年06月19日 14时16分42秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php实现根据身份证获取年龄
2023-03-01
PHP实现的MongoDB数据增删改查
2023-03-01
PHP实现的SSO单点登录系统,拿走就用吧
2023-03-01
php实现短信验证功能
2023-03-01
php实现逆转数组
2023-03-01
PHP实现通过geoip获取IP地理信息
2023-03-01
PHP实现页面静态化、纯静态化及伪静态化
2023-03-01
php容许ajax跨域,PHP设置允许ajax跨域请求的两种常见方法
2023-03-01
RabbitMQ进程结构分析与性能调优
2023-03-01
PHP对接百度地图
2023-03-01
PHP对表单提交特殊字符的过滤和处理
2023-03-01
php对象引用和析构函数的关系
2023-03-01
RabbitMQ HTTP 认证后端项目常见问题解决方案
2023-03-01
PHP将图片转换成base64格式(优缺点)
2023-03-01
php将多个值的数组去除重复元素
2023-03-01
php局域网上传文件_PHP如何通过CURL上传文件
2023-03-01
PHP工具插件大全
2023-03-01
php布尔值的++
2023-03-01
PHP常量、变量作用域详解(一)
2023-03-01