【发布时间】:2016-05-03 22:51:59
【问题描述】:
我有两个类 B 和 C(都派生自一个类 A)一个名为 H 的类,它持有 A 或 B。
代码:
class A // abstract base class
{
// bells and whistles
// virtual fn
void fn() = 0 ;
protected:
// some variables common to B and C
};
class B : public A // inherit from A...
{
B();
fn(); // implement virtual function
// bells and whistles
};
B::B() :A()
{
// things
}
void B::fn()
{
// things
}
// Class C : exactly the same as class B
// Class H : holds B or C
enum class CLASS_TYPE { TYPE_B, TYPE_C }
class H
{
public:
H(CLASS_TYPE type_);
~H();
private:
A * _obj;
};
H::H(CLASS_TYPE type_)
{
switch(type_)
{
case CLASS_TYPE::B:
_obj = new B();
break;
case CLASS_TYPE::C:
_obj = new C();
break;
}
}
H::~H()
{
delete _obj;// delete allocated object
}
这是基于构造函数中的参数在类中创建内部对象的正确方法吗? 也是使用抽象基类,虚拟高效吗?这是大型模拟程序的一部分,我想避免性能损失。
谢谢。 PS:我尽量保持简单,如果需要更多信息,请告诉。
【问题讨论】:
标签: c++ inheritance polymorphism virtual multiple-inheritance