c++ - 知道基类指针指向哪个派生类

标签 c++ inheritance derived-class

假设我有一个 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/

相关文章:

c++ - 将变量的名称传递给 C++ 中的函数

c++ - 有没有什么好的方法可以去除vector或deque中的元素?非常欢迎提供一些示例代码

c++ - 将 vector append 到 vector 的最佳方法

c++ - 理解(简单?)C++ 继承

c++ - void f() = 0 是虚方法吗?

c# - 将派生类作为基类传递给 Web 服务方法

c++ - 计算每行的空格

javascript - 我可以在不使用 new 关键字的情况下构造 JavaScript 对象吗?

c++ - 如何在多态中调用子对象的重载函数?

Java 构造函数未调用