c ++:动态选择要创建的子类

Geo*_*rge 2 c++ class derived dynamic

我是c ++的新手,我有一个问题.

假设我们有一个基类Base和两个派生类Derived1和Derived2.fe Derived1有一个带整数的构造函数,Derived2有一个带布尔值的构造函数.

是否有可能在运行时(或在编译时)确定要创建这两个子类中的哪一个并将其分配给Base类.

像这样:Base b = ???(value),其中value是integer或boolean类型.

提前致谢!

Ara*_*raK 8

写一个名为的函数的两个重载createMyBlaBla.一个接受int,另一个接受bool.每个人都返回所需的派生类类型.例如:

Base* create(int n)
{
    return new Derived1(n);
}
Base* create(bool b)
{
    return new Derived2(b);
}
....
Base* b1 = create(10);    // Derived1
Base* b2 = create(false); // Derived2
Run Code Online (Sandbox Code Playgroud)

人们称之为工厂模式.