次の場合:
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
、私はそれを高く評価します。