【发布时间】:2010-01-24 01:13:56
【问题描述】:
我是 C++ 新手,我有一个问题。
假设我们有一个基类 Base 和两个派生类 Derived1 和 Derived2。 f.e. Derived1 有一个采用整数的构造函数,而 Derived2 有一个采用布尔值的构造函数。
是否可以在运行时(或在编译时)确定创建这两个子类中的哪一个并将其分配给基类。
类似这样的: Base b = ???(value),其中 value 的类型为整数或布尔值。
提前致谢!
【问题讨论】:
-
如果您习惯于 Java,请记住在 C++ 中,
Base b声明一个 object,而不是对对象的引用。如果您将派生对象分配给基础对象,那么它将被切片(假设它甚至可以编译)。对于 C++ 中的动态多态性,您需要使用 AraK 的答案中的指针。 -
你的课是做什么的?使用模板派生可能更有意义,即类似
Derived<int> d(someInt);。