假设我有一个 Animal 类和两个派生类 - Dog 和 Cat。 这样做是完全合法的-
Dog d;
Cat c;
Animal* a1 = &c;
Animal* a2 = &d;
现在,给定 a1 和 a2,我能知道这个指针指向哪个派生类吗?
我现在唯一的想法是在 Animal 类中再添加一个成员字段,并在构造函数中对其进行初始化。这甚至是一种好的做法吗?
最佳答案
是的,这是合法的,是的,这是恢复原始类型的一种方式。您也可以使用 dynamic_cast,但这会产生开销。一般程序将其存储在派生类型中,只有在无关紧要的时候才用基类引用它。
我发现如果您必须执行类似 dynamic_cast 的操作,您必须重新考虑程序的设计。
关于c++ - 知道基类指针指向哪个派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33886482/