当B类派生自A时,我有简单的继承.A包含一些简单类型的成员定义,没有指针。 B类更复杂,可能包含对象之间某些逻辑连接的指针。如果我有两个B类型的对象(例如b1和b2),当我只将b2的A部分复制到b1时,如何正确地写入赋值。
对我有用的建筑是:*(A*)&b1 = *(A*)&b2
。但是在现代C ++上实现这个的正确方法是什么?
答案 0 :(得分:0)
a)你所做的事情看起来技术上是正确的(即恕我直言,它应该适用于所有地方)
b)然而,正如任何带有强制转换的代码一样,它很麻烦且容易出错
c)为了使其更具可读性,我建议添加如下内容:
class A {
//...
public:
void copyA(const A& other) {
*this = *other;
}
};
到你的A级,然后你就可以调用更明显的b1.copyA(b2),而不是你当前的(正确的,但容易出错的)代码。