Cpp_拷贝构造与拷贝赋值

来源:互联网 发布:我知你忌讳是什么意思 编辑:程序博客网 时间:2024/06/05 09:16

1.深拷贝与浅拷贝

如果一个类包含指针形式的成员变量,系统提供的缺省拷贝构造函数,只是复制了指针成员变量本身,而没有复制该变量所指向的内容,这种拷贝方式被称为浅拷贝。浅拷贝将导致不同对象间的数据共享,同时会在析构函数中引发”double free”异常。为此就必须自己定义一个支持复制内容即深拷贝的拷贝构造函数。

2.类的缺省拷贝赋值

类的缺省拷贝赋值同样对于基本类型成员变量按字节复制,因此和缺省拷贝构造函数一样,是浅拷贝。为了得到深拷贝的赋值效果,就需要自己定义一个支持深拷贝的拷贝赋值运算符函数。

    1)防止自赋值    2)分配新资源    3)释放旧资源    4)复制新内容    5)返回自引用    6)复用拷贝构造和析构

3.忠告和建议

1)尽量避免是指针形式的成员变量;
2)尽量避免拷贝构造和拷贝赋值;
3)如果拷贝构造支持深拷贝,那么拷贝赋值就也应该支持深拷贝,反之亦然。
4)处于具体原因,确实无法实现深拷贝的拷贝构造和拷贝赋值,可以将拷贝构造函数和拷贝赋值运算符函数声明为私有函数,禁止用户使用。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机wps密码忘了怎么办 苹果手表忘了密码怎么办 苹果系统忘了密码怎么办 ps画板建小了怎么办 wps表格密码忘了怎么办 word文档变成虚的怎么办 wps论文中表格跨页怎么办 word文档复制过来有边框怎么办 wps表格跨页断开怎么办 锅的铆钉老是松怎么办 文胸不知道怎么染色了怎么办 未后的信息我该怎么办? 做leep手术后大出血怎么办 眼线笔出不了水怎么办 手机字体变成空心字怎么办 平安树树枝黑了怎么办 柳树被虫钻洞了怎么办 柳树叶子上有虫子怎么办 小金鱼翻肚皮了怎么办 秋天树叶没了小鸟怎么办 去国外旅游不会英语怎么办 橡皮树长了2米高怎么办 榕树盆景长的高怎么办? 2岁宝宝看书弯腰低头怎么办 excel表格打开很慢怎么办 3d模型有红线框怎么办 电视页面加载时错误怎么办 投屏显示加载视频错误怎么办 word遇到问题需要关闭怎么办 画眼线看不出来怎么办 14岁眼皮很松怎么办啊 ps存不了psd格式怎么办 花草上有白色物怎么办 ps抠出来有白边头发怎么办 脸上结痂掉了有红印怎么办 海棠花瓣干枯怎么办茎变软 微信上的图片打不开怎么办 口红吊兰老掉叶子怎么办 翠叶竹芋叶子卷怎么办 牙有龋齿垫底以后酸怎么办 事业单位辞职请示30天不批怎么办