设为首页 加入收藏

TOP

3.5.5 定义拷贝构造函数(2)
2013-10-07 15:31:07 来源: 作者: 【 】 浏览:71
Tags:3.5.5 定义 拷贝 构造 函数

3.5.5   定义拷贝构造函数(2)

这个拷贝构造函数将d1的数据成员拷贝到d2(见图3-3)。

 
图3-3   编译器提供的拷贝构造函数将d1的数据成员拷贝到d2的数据成员
这样,第一次调用d2.dump()时,其输出为
 

将字符串Great Dane拷贝到d2.p指向的存储区域的第二块位置(见图3-4)。

语句

 
的输出为
 
 
图3-4   将Great Dane拷贝到d2.p指向的存储区域的第二块位置后,d1与d2的内存映像
需要注意的是,由于d1.p与d2.p现在指向相同的存储区域,则如下语句:
 
虽然d1没有调用set成员函数,但d1的内容却改变了!这是一个非常微妙的错误,我们本希望通过定义
 

来获得一个新的对象d2,d2拥有自己的存储空间,来保存这些字符串,而不是与d1共享存储空间。结果编译器却生成了一个拷贝构造函数,将d1.p直接赋给d2.p,将d1.size直接赋给d2.size,使得d1和d2的指针指向了同一个存储区域。

程序清单3-6列举了因使用编译器生成的拷贝构造函数而导致的严重后果。

例3-27

程序清单3-7改正了程序清单3-6的错误,具体方法是为Namelist类提供一个满足要求的拷贝构造函数。

程序清单3-7   为类设计合适的拷贝构造函数

 
 
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.5.5 定义拷贝构造函数(3) 下一篇2.8.1 课后练习

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python中文网 - 人生 (2025-12-24 18:49:47)
·【整整648集】这绝对 (2025-12-24 18:49:44)
·Python超详细一条龙 (2025-12-24 18:49:42)
·【超详细】JDK 下载 (2025-12-24 18:19:32)
·Java_百度百科 (2025-12-24 18:19:29)