如果您有以下情况:
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();
调用?some_function();
Bird
我一直在试图弄清楚它是如何dynamic_cast
工作的,而我在网上找到的资源并不是最有帮助的。如果有人可以对它的功能和某些有用的实例提供其他见解dynamic_cast
,我将不胜感激。