什么時候dynamic_cast轉換會失敗?

這個dynamic_cast是針對類的指針而言的,只要指針轉換的對象類是不可訪問的,那么就會失敗。那么什么叫做不可訪問呢?比如說,你要把子類的指針轉換成父類的指針,但是子類是通過private繼承了父類,此時父類的非private成員都是子類的private成員,所以子類的指針無法直接訪問父類的非private成員,這時就會出現轉換失敗的問題。
所以,你要想讓指針轉換成功,子類必須通過public繼承父類。
可以推出,dynamic_cast是針對is-a關系設計的。
因為父類指針指向子類對象本身就是多態的性質,所以dynamic_cast存在的意義就在于讓子類指針指向父類。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. C++基礎知識點 1.1 有符號類型和無符號類型 當我們賦給無符號類型一個超出它表示范圍的值時,結果是初始值...
    Mr希靈閱讀 18,031評論 3 82
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,739評論 18 399
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,533評論 1 51
  • 一、 C/C++程序基礎 面試例題1——分析代碼寫輸出(一般賦值語句的概念和方法)。 面試例題2—...
    LuckTime閱讀 2,003評論 2 42
  • 這個題目應該有個副標題——需求第二定律的原理及應用推廣。但我不是經濟學家,所以…… 從經濟學的角度看,這是個很有意...
    方塘水淺閱讀 5,743評論 0 1