C++ 使用dynamic_cast执行基类向派生类的转换
生活随笔
收集整理的這篇文章主要介紹了
C++ 使用dynamic_cast执行基类向派生类的转换
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
dynamic_cast是與static_cast,const_cast,reinterpret_cast并列的4種類(lèi)型轉(zhuǎn)換操作之一。它可以將基類(lèi)的指針顯示轉(zhuǎn)換為派生類(lèi)的指針,或?qū)⒒?lèi)的引用顯示轉(zhuǎn)換為派生類(lèi)的引用。但與static_cast不同的是,它執(zhí)行的不是無(wú)條件的轉(zhuǎn)換,它在轉(zhuǎn)換前會(huì)檢查指針(或引用)所指向?qū)ο蟮膶?shí)際類(lèi)型是否與轉(zhuǎn)換的目的類(lèi)型兼容,如果兼容轉(zhuǎn)換才會(huì)發(fā)生,才能得到派生類(lèi)的指針(或引用),否則:
- 如果執(zhí)行的是指針類(lèi)型的轉(zhuǎn)換,會(huì)得到空指針。
- 如果執(zhí)行的是引用類(lèi)型的轉(zhuǎn)換,會(huì)拋出異常。
注:
轉(zhuǎn)換前類(lèi)型必須是指向多態(tài)類(lèi)型的指針,或多態(tài)類(lèi)型的引用,而不能是指向非多態(tài)類(lèi)型的指針或非多態(tài)類(lèi)型的引用,這是因?yàn)镃++只為多態(tài)類(lèi)型在運(yùn)行時(shí)保存用于運(yùn)行時(shí)類(lèi)型識(shí)別的信息。
總結(jié)
以上是生活随笔為你收集整理的C++ 使用dynamic_cast执行基类向派生类的转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java 三位数的变形
- 下一篇: ROS系统 用Python或C++实现发