[讨论]关于memberwise和bitwise

jingxiee 2008-03-04 08:59:05
一直有个疑问:拷贝时,memberwise和bitwise有何区别。

今天看了英文版<inside the c++ object model>,第59页最后和第60页开头,有这么句话:There are no member or base class objects with a copy constructor that need to be invoked. Nor is there a virtual base class or virtual function associated with the class. So, by default, a memberwise initialization of one Point3d class object with another result in a bitwise copy.

class Point3d{
public:
Point3d(float x, float y, float z);
//...
private:
float _x, _y, _z;
};

我的理解是,拷贝构造函数的目的就是为了实现按成员初始化(memberwise initialization),在除了上面所说的四种情况外,可以通过按位拷贝(bitwise copy)来实现。
...全文
168 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinosinux 2008-03-04
  • 打赏
  • 举报
回复
(情况1,2)如果一个类的成员类或者父类有拷贝构造函数, 那么这个类的拷贝构造函数就必须调用他们的copy constructor, 不能用bitwise语音构造成员类或者父类占有的那部分内存
(情况3,4)涉及virtual,有vptr的存在就不会使用bitwise方式
sinosinux 2008-03-04
  • 打赏
  • 举报
回复
对, 除了这四种情况外都是bitwise copy的

64,646

社区成员

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

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