当类B从A派生时,我有一个简单的继承。A包含一些简单类型的成员定义,没有指针。B类更为复杂,它可能包含指向对象之间某些逻辑连接的指针。如果我有两个B类型的对象(例如b1和b2),当我只将b2的A部分复制到b1时,如何正确地写入赋值。适合我的结构是:*(A*)&b1 = *(A*)&b2。但是,在现代C++上实现这一点的正确方法是什么呢?
发布于 2015-06-06 22:18:52
a)你正在做的事情在技术上看起来是正确的(例如,我认为它应该适用于所有地方)
b)然而,与任何使用强制转换的代码一样,它是繁琐且容易出错的
c)为了使它更具可读性,我建议添加如下内容:
class A {
//...
public:
void copyA(const A& other) {
*this = *other;
}
};对于您的类A,那么您将能够调用更明显的b1.copy A(B2),而不是当前(正确但容易出错)的代码。
https://stackoverflow.com/questions/30683848
复制相似问题