
拷贝构造函数
调用 display 函数,传递一个 Line 对象。 拷贝构造函数被调用,将 obj 的 ptr 成分复制到新对象的 ptr 中。 析构函数在对象离开 scope 时被自动调用,释放指针。
发布日期:2021-05-08 04:51:07
浏览次数:12
分类:精选文章
本文共 583 字,大约阅读时间需要 1 分钟。
拷贝构造函数是C++中用于对象复制的重要机制,它通过已有对象初始化新对象,避免了 manual memory allocation 和 initialization 的繁琐。拷贝构造函数通常分为两种形式:一种是接受一个 const ref 的拷贝构造函数,另一种是接受一个值参数(value argument)的拷贝构造函数。前者用于深拷贝,后者则用于浅拷贝。
在代码中,如果没有定义拷贝构造函数,编译器会自动生成一个,默认执行浅拷贝。如果类中有动态分配的指针成员(如上述例子中的 Line 类),则必须手动定义拷贝构造函数,确保正确复制所有成员变量。
例如,Line 类的拷贝构造函数:
Line(Line const &obj) { // shallow copy ptr = new int; *ptr = obj.ptr;}
在函数 display 中传递 Line 对象时,会调用拷贝构造函数,执行如下步骤:
这导致了运行结果中看到的双重析构函数调用:一次用于拷贝对象,另一次用于释放原对象的内存。这种行为是正常的,确保了对象的正确生命周期管理。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月05日 12时26分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
jvm-02
2019-03-05
ThreadLocal的使用总结
2019-03-05
jvm-05
2019-03-05
spring boot@Value和bean执行顺序问题
2019-03-05
从浏览器输入网址到服务器返回经历的过程
2019-03-05
CPU过载内存溢出分析
2019-03-05
解决Genymotion无法拖拽的问题
2019-03-05
中国石油大学《计算机文化基础》在线考试(客观题)
2019-03-05
中国石油大学《 管理心理学(行政管理专业禁选)》在线考试
2019-03-05
机器学习(numpy/matplotlib/scipy)学习笔记
2019-03-05
HTML CSS JS 特殊字符表
2019-03-05
codeforces The Eternal Immortality 题解
2019-03-05
蓝桥杯 历届试题 幸运数 (堆+DFS)
2019-03-05
微信js-sdk使用简述(分享,扫码功能等)
2019-03-05
selenium 的介绍和爬取 jd数据
2019-03-05
python-selenium优化方案
2019-03-05
服务器 centos 系统漏洞快速修复简易方法
2019-03-05
【分享-一键在线抠图】在线免费去除图片背景
2019-03-05