考虑:
class Base{
private:
int general_attribute;
};
class Derived : public Base{
private:
int specific attribute;
public:
void reassign(Base value);
};
是否存在一种通用的,可维护的方式来编写reassign
,以便仅从基类实例中复制基类成员(即general_attribute
)?
如果我理解正确,那就写
void Derived::reassign(Base value){
*this = value;
}
不会这样做,因为它会由于对象切片而导致specific_attribute
丢失。
推荐的解决方案有哪些?