分類: c++
2011-12-15 14:19
5117人閱讀收藏
舉報c++
編譯器iostream
class
object
null
/*這是從網上摘下的例子,主要講述了 dynamic_cast<> 的使用方法。*/
/* 作用:將乙個基類物件指標(或引用)cast到繼承類指標,dynamic_cast會根據基類指標是否真正指向繼承類指標來做相應處理,
即會作一定的判斷。
對指標進行dynamic_cast,失敗返回null,成功返回正常cast後的物件指標;
對引用進行dynamic_cast,失敗丟擲乙個異常,成功返回正常cast後的物件引用。
注意:dynamic_cast在將父類cast到子類時,父類必須要有虛函式。例如在下面的**中將cbasic類中的test函式不定義成
virtual時,編譯器會報錯:error c2683: dynamic_cast : 「cbasic」不是多型型別
對編譯器的要求:
dynamic_cast<> 會用到rtti技術,因此需要啟動「執行時型別資訊」這一選項,而在vc.net 2003中預設是關閉的。
所以需要人為的啟動這一選項。否則編譯器會報下面的警告:
warning c4541: 「dynamic_cast」用在了帶 /gr- 的多型型別「cbasic」上;
可能導致不可預知的行為從而導致程式在執行時發生異常。
該設定在 project->setting中 c/c++ -> c++ language中設定。
*/ #include
using namespace std;
class cbasic
// 一定要是 virtual
}; class cderived : public cbasic
}; int main()
**論壇的文章,位址使用中發現紅字部分以前沒注意過
C 中的dynamic cast 操作符
c 提供了四種強制轉型的方式,除了dynamic cast是在執行中被決議,其它三種在編譯期即可被決議。聯想c 中多型的實現,可以想到既然能在執行中決議,必然和rtti有關 rtti 是 runtime type information 的縮寫,意思是 執行時型別資訊。它提供了執行時確定物件型別的方...
C 中dynamic cast的使用方法
這是從網上摘下的例子,主要講述了 dynamic cast 的使用方法。作用 將乙個基類物件指標 或引用 cast到繼承類指標,dynamic cast會根據基類指標是否真正指向繼承類指標來做相應處理,即會作一定的判斷。對指標進行dynamic cast,失敗返回null,成功返回正常cast後的物...
C 中深入理解dynamic cast
一 指標型別的dynamic cast 如果一條dynamic cast語句的轉換目標是指標型別並且轉換失敗了,會返回乙個空指標,則判斷條件為0,即為false 如果轉換成功,指標為非空,則判斷條件為非零,即true。這樣做可以確保型別轉換和條件檢查在同一條表示式中完成 if derived pd ...