次の場合:
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);
birdAnimalこれでクラスを指すようになり、使用できるようになり、 ?bird->some_function();で関数が呼び出されます。Animalそして今、クラスをanimal指しているので、私はそれを行うことができ、それは呼び出されますか?Birdanimal->some_function();some_function();Bird
私はどのようにdynamic_cast機能するかを理解しようとしてきましたが、オンラインで見つけたリソースはあまり役に立ちませんでした。誰かがその機能とそれが役立つであろういくつかの例について他の洞察を提供することができればdynamic_cast、私はそれを高く評価します。