初始化从其基类转换而来的派生类的首选方法是什么?
考虑以下场景:
class A{
public:
A();
~A();
}
class B : public A{
public:
B() {m_b = 0.0;};
~B();
float GetValue(){return m_b;};
private:
float m_b;
}
A* a = new A;
B* b = static_cast<B*>(a);
float val = b->GetValue(); // This was never initialized because it was not constructed
我当前的解决方案是手动调用 Initialize() 函数,该函数将像构造函数一样执行必要的初始化。
不过,这似乎很草率,必须有更好/更清洁的方法。
非常感谢任何帮助和指导!