如果你有以下幾點:dynamic_cast如何工作?
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功能的其他洞察以及一些有用的實例,我將非常感謝。
您投下了錯誤。 「鳥」和「動物」已經是指針了,但你正在考慮他們的地址。 –
@Olaf。感謝您的編輯。也許你應該刪除你的評論。 –