免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2131 | 回复: 3
打印 上一主题 下一主题

关于“位拷贝”和“值拷贝”的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-01 15:03 |只看该作者 |倒序浏览
:::“缺省的拷贝构造函数”和“缺省的赋值函数”均采用“位拷贝”而非“值拷贝”的方式来实现,倘若类中含有指针变量,这两个函数注定将出错。


请哪位高手能具体为我讲一下关于:“位拷贝”和“值拷贝”的区别吗???

谢谢。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-12-01 15:32 |只看该作者

关于“位拷贝”和“值拷贝”的问题?

原帖由 "月下雨露" 发表:
:::“缺省的拷贝构造函数”和“缺省的赋值函数”均采用“位拷贝”而非“值拷贝”的方式来实现,倘若类中含有指针变量,这两个函数注定将出错。


请哪位高手能具体为我讲一下关于:“位拷贝”和“值拷贝”的区..........

比如你的一个类里有一个char *pstr,这是一个字符串指针,
     你在生成这个类的对象时,对这个指针初始化,使之指向一个
字符串,但这个字符串是不属于这个类的对象的,是在外部
定义的一个字符串。这样,当你用缺省的拷贝构造函数”和“缺省的赋值函数“
时,初始化或赋值另一个对象时,另一个对象里面的pstr指针也指向这个字符串,也就是2个对象都指向这个字符串。你想一想,要是一个对象销毁了,把它指向的字符串也释放了,另一个对象销毁时会怎么样?这就是“位拷贝”的概念。
     相反,如果你自己实现缺省的拷贝构造函数”和“缺省的赋值函数”,
用在初始化或赋值另一个对象时,使得重新申请空间,拷贝第一个对象所指向的字符串,然后把新申请的空间的指针赋给pstr,这就是“值拷贝”。好好看看书吧,很多书里面说得都很明白。

论坛徽章:
0
3 [报告]
发表于 2003-12-04 21:13 |只看该作者

关于“位拷贝”和“值拷贝”的问题?

谢谢楼上的高手指教。。。。。。。。。。。。。。。。。

论坛徽章:
0
4 [报告]
发表于 2003-12-04 22:11 |只看该作者

关于“位拷贝”和“值拷贝”的问题?

定义一个复制构造函数也可以解决这个问题吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP