轉(zhuǎn)型操作其實(shí)是一個(gè)沒有辦法的辦法费坊,一般情況下事格,能不用就不用氢卡;如果轉(zhuǎn)型不可避免沟涨,也要用最安全的辦法進(jìn)行
舊式轉(zhuǎn)型操作
(T)expression;
T(expression);
這是我們慣用的兩種舊式轉(zhuǎn)型方法,比如從int
轉(zhuǎn)型到double
新式轉(zhuǎn)型操作
建議全部采用新式轉(zhuǎn)型异吻,拋棄舊式轉(zhuǎn)型
static_cast
static_cast
的用法是最簡(jiǎn)單的,但是要注意一點(diǎn),它是對(duì)參數(shù)進(jìn)行拷貝后再進(jìn)行操作的诀浪,不是在原對(duì)象身上進(jìn)行操作棋返,詳情見https://stackoverflow.com/questions/9084835/why-does-static-castthis-to-a-base-class-create-a-temporary-copy
dynamic_cast
作用是安全地由基類 down casting 到派生類
值得指出的是,dynamic_cast
的開銷可能比較大雷猪,在對(duì)性能要求比較高的場(chǎng)合睛竣,要尤其注意
dynamic_cast
的使用場(chǎng)合一般是,手頭有一個(gè)基類的指針或引用求摇,但你很確信實(shí)際的類型是一個(gè)派生類