复制构造函数和基类C++

Ste*_*eve 3 c++ serialization constructor copy

我希望能够从基类初始化派生类,如下所示:

class X {
   public:
   X() : m(3) {}
   int m;
};

class Y : public X {
   public: 
   Y() {}
   Y(const & X a)  : X(a) {}
};
Run Code Online (Sandbox Code Playgroud)

这样做有什么危险或不寻常的吗?我想要它,因为我正在反序列化一些我不会立即知道的类型的对象,所以我基本上想要使用X作为一些临时存储,而我正在读取整个序列化文件,然后创建我的Y对象(和W,X,Y objs,取决于数据)之后使用该数据.也许有一种我更容易丢失的方式.

谢谢!

Mic*_*urr 5

只要X具有正确的复制ctor(自动生成或不自动生成)并且将Y(如果有的话)的其他成员设置为适当的默认值,则应该没有问题.

我假设Y有一些setter方法可以Y使用序列化流中的后续信息的结果进行更新?

另请注意,您Y的X构造函数应该具有看起来更像的签名:

Y( X const & a)   // the X was in an invalid place before
Run Code Online (Sandbox Code Playgroud)