仅将基础部件从一个对象分配给另一个对象

时间:2015-06-06 14:09:02

标签: c++

当B类派生自A时,我有简单的继承.A包含一些简单类型的成员定义,没有指针。 B类更复杂,可能包含对象之间某些逻辑连接的指针。如果我有两个B类型的对象(例如b1和b2),当我只将b2的A部分复制到b1时,如何正确地写入赋值。 对我有用的建筑是:*(A*)&b1 = *(A*)&b2。但是在现代C ++上实现这个的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

a)你所做的事情看起来技术上是正确的(即恕我直言,它应该适用于所有地方)

b)然而,正如任何带有强制转换的代码一样,它很麻烦且容易出错

c)为了使其更具可读性,我建议添加如下内容:

class A {
  //...
  public:
  void copyA(const A& other) {
    *this = *other;
  }
};

到你的A级,然后你就可以调用更明显的b1.copyA(b2),而不是你当前的(正确的,但容易出错的)代码。