【发布时间】:2012-11-26 19:48:19
【问题描述】:
如果您有以下情况:
class Animal{};
class Bird : public Animal{};
class Dog : public Animal{};
class Penguin : public Bird{};
class Poodle : public Dog{};
dynamic_cast 是否只检查一个类是另一个类的派生类,还是一个类是另一个类的基类?所以如果我有:
Bird* bird;
Animal* animal;
bird = dynamic_cast<Animal*>(bird);
animal = dynamic_cast<Bird*>(animal);
bird 现在将指向一个Animal 类,这样我就可以使用bird->some_function();,它会调用Animal 中的函数?而animal 现在指向一个Bird 类,所以我可以做animal->some_function();,它会在Bird 中调用some_function();?
我一直试图弄清楚dynamic_cast 的工作原理,而我在网上找到的资源并不是最有帮助的。如果有人能对dynamic_cast 的功能以及它有用的一些实例提供其他见解,我将不胜感激。
【问题讨论】:
-
你投错了。
bird和animal已经是指针,但您正在获取它们的地址。 -
@Olaf。感谢您的编辑。也许你应该删除你的评论。
标签: c++ dynamic dynamic-cast