您好,登錄后才能下訂單哦!
#include <iostream> using namespace std; #include <typeinfo> class A{ public: virtual void foo(void){} }; class B:public A{ void foo(void){} }; class C:public A{ void foo(void ){} }; int main(void){ B b; A* pa= &b; B* pb = dynamic_cast<B*>(pa);//pa是指向B類型的基類指針,OK //C* pc = dynamic_cast<B*>(pa); //pa不是指向C類型的基類指針,error B b1; A& ra = b1; B& b2 = dynamic_cast<B&>(ra); //C& c1 = dynamic_cast<C&>(ra);error return 0; } 上面兩個錯誤都是,編譯時不報錯,運行時報錯. dynamic_cast主要是將指向子類的基類指針轉化為子類的指針 轉換過程中會檢查目標和期望轉換的對象是否一致,一致轉換 成功,否則失敗,如果轉換為指針,則失敗返回NULL,如果是引用失敗 返回bad_cast異常
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。