| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 967 人关注过本帖
标题:有谁能帮忙解释一下复制构造函数
只看楼主 加入收藏
陈子风
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-3-20
收藏
 问题点数:0 回复次数:5 
有谁能帮忙解释一下复制构造函数
最近看到C++中关于复制构造函数的问题,就是看不太懂,哪位大哥能否帮我解释一下:
复制构造函数到底是干什么的,有什么用!
搜索更多相关主题的帖子: 函数 构造 解释 
2008-05-25 21:44
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
就是把  同一个类声明的对象赋值给另一个对象
好象还有个 转类型的赋值构造函数 就是把一个类的对象 赋值给另一个 不同的类对象
2008-05-25 22:20
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
我们在程序中常常需要把一些数据复制一份出来备作它用。对于只有基本类型变量的程序来说,这是轻而易举就能做到的——新建一个临时变量,用一句赋值语句就能完成。但如果它是一个有着许许多多成员数据的对象,这就会非常麻烦。最麻烦的是,那些成员数据还是私有的,根本无法直接访问或修改。那么这时候,我们怎么“克隆”出一个和原来对象相同的新对象呢?

根据程序运行的结果,我们发现输出链表b的内容的确和链表a一样了,并且可以得到三个结论:
(1)拷贝构造函数可以读出相同类对象的私有成员数据。
(2)拷贝构造函数的实质是把参数的成员数据一一复制到新的对象中。
(3)拷贝构造函数也是构造函数的一种重载。

构造函数有默认构造函数,其实拷贝构造函数也有默认的拷贝构造函数。所谓默认拷贝构造函数是指用户没有自己定义拷贝构造函数时,系统自动给出的一个拷贝构造函数。默认拷贝构造函数的功能是将对象的成员数据一一赋值给新创建对象的成员数据。如果某些成员数据本身就是对象,则自动调用它们的拷贝构造函数或默认拷贝构造函数。

程序15.4.1中的拷贝构造函数仅仅是把成员数据拷贝了过来,却没有把动态申请的资源复制,我们把这种拷贝称为浅拷贝。相对地,如果拷贝构造函数不仅把成员数据拷贝过来,连动态申请的资源也拷贝了,则称之为深拷贝。

以上摘自《易学C++》第15章,希望能对LZ有帮助。
2008-05-25 22:32
陈子风
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-3-20
收藏
得分:0 
谢谢大家了   已经有点头绪了
2008-05-26 22:00
bibingyan
Rank: 1
来 自:湖南长沙
等 级:新手上路
帖 子:123
专家分:0
注 册:2008-3-16
收藏
得分:0 
很多时候复制构造函数需要用列表的形式实现。

不嫌恶地狱,不迷恋人间,不羡慕天堂。
2008-05-26 22:56
lucky_boy
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2008-4-3
收藏
得分:0 
5楼说的没错
当对象中的指针成员用new申请的数组时,才更能显示其价值
2008-05-26 23:14
快速回复:有谁能帮忙解释一下复制构造函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043828 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved