這個dynamic_cast是針對類的指針而言的,只要指針轉換的對象類是不可訪問的,那么就會失敗。那么什么叫做不可訪問呢?比如說,你要把子類的指針轉換成父類的指針,但是子類是通過private繼承了父類,此時父類的非private成員都是子類的private成員,所以子類的指針無法直接訪問父類的非private成員,這時就會出現轉換失敗的問題。
所以,你要想讓指針轉換成功,子類必須通過public繼承父類。
可以推出,dynamic_cast是針對is-a關系設計的。
因為父類指針指向子類對象本身就是多態的性質,所以dynamic_cast存在的意義就在于讓子類指針指向父類。
什么時候dynamic_cast轉換會失敗?
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。