怎样理解这句话?

AHigher 2004-03-22 05:45:15
(2)“缺省的拷贝构造函数”和“缺省的赋值函数”均采用“位拷贝”而非“值拷贝”的方式来实现,倘若类中含有指针变量,这两个函数注定将出错。
...全文
41 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelo23 2004-04-01
  • 打赏
  • 举报
回复
To cgsw12345(cgsw)
你说的我自然知道,不过
----------------
"memberwise copy 就应该刺位拷贝!"
"对于这四种情况下的"缺省的拷贝构造函数”和“缺省的赋值函数”就不会是位拷贝了!"
--------------------
这两句话是不是有点矛盾?:-)
azhengabc 2004-04-01
  • 打赏
  • 举报
回复
就是说 如果你有一个对象 给另一个对象复制 或 初始化另一个对象是 如调用默认拷贝构造函数
则是把对应变量的值拷过去 这对指针成员变量来说 是一个灾难
cgsw12345 2004-03-31
  • 打赏
  • 举报
回复
to:angelo23(angelo)
memberwise copy 就应该刺位拷贝!
不过情况没有那么简单,
应该除开下面四种情况:其他的"缺省的拷贝构造函数”
和“缺省的赋值函数”均采用“位拷贝”
1.当类内含有一member object而member object的类声明了一个拷贝构造函数
2.当类继承一个基类而基类有一个拷贝构造函数
3.当类声明了一个virtual function
4.当类一个或多个virtual base class.

对于这四种情况下的"缺省的拷贝构造函数”
和“缺省的赋值函数”就不会是位拷贝了!
angelo23 2004-03-31
  • 打赏
  • 举报
回复
谁说“缺省的拷贝构造函数”和“缺省的赋值函数”均采用“位拷贝”?应该是memberwise copy才对。
Haimiao 2004-03-31
  • 打赏
  • 举报
回复

以前的解释不够严密,刚刚看到:

拷贝分为context 和bit Copy。细节可以看Effective C++ 上的介绍,这是是否重载=操作符和写拷贝构造函数的要义。
byyyyy 2004-03-24
  • 打赏
  • 举报
回复
如果指针用位拷贝,则仅仅是把指针的地址赋值过去,那么在用的时候自然就会出错!
ylredsun 2004-03-24
  • 打赏
  • 举报
回复
位COPY只是值COPY,当有针指变量成员时,就会把地址直接COPY过去.

因此如果建立了几个不同的对象.那么它们的指针变量就会指向同一片地址.

对一个对象的指针的值的改变,会影响到其它对象
古布 2004-03-22
  • 打赏
  • 举报
回复
位拷贝指浅拷贝,即若类中含有指针变量,只拷贝指针,而不是拷贝其内容。
值拷贝指深拷贝,内容的拷贝
liem 2004-03-22
  • 打赏
  • 举报
回复
由于指针变量内存放的是地址,当用位复制时,仅把地址复制过去,因此容易出错。
Haimiao 2004-03-22
  • 打赏
  • 举报
回复
拷贝分为context 和bit Copy。细节可以看Effective C++ 上的介绍,这是是否重载=操作符的要义。
new1mm 2004-03-22
  • 打赏
  • 举报
回复
也就是说当含有指针变量时,系统只拷贝了这个指针尔没有拷贝指针所指向的实际内容。这样当你改变了其中一个变量的内容时,另一个也跟着变了,失去了拷贝的意义
孙亖 2004-03-22
  • 打赏
  • 举报
回复
gz

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧