Type-Casting in C++

在C中用久了Type-Casting也許覺得這也沒什麼
只要宣告一下型態就可以了
但在C++中,由於物件的導入,所以變的不在那麼單純,
Type-Casting也多了四種型態reinterpret_cast, const_cast, static_cast, dynamic_cast
當然原本C的還是可以用啦。
  1. const_cast可以移除物件的constness,使存取原本被宣告為const的物件變的可能。
  2. static_cast
    • 僅依靠compile time的資訊來做可行性的驗證,在run time則沒有做
    • 使用在數字型態的轉換或是相關class的轉換 (upcasting or downcasting)
  3. dynamic_cast
    1. 在compile time和run time的資訊來做可行性的驗證,但是run time的檢查同時也是種overhead
    2. 是在做object pointer or reference的轉換 (在upcasting會成功)
    3. 當在對pointer的cast失敗會return NULL;在對reference的cast失敗會丟exception
  4. reinterpret_cast則是強制轉換,不在意class間的關係。

MSDNCodeProject上都有很不錯的文件,另外在CprogrammingCplusplus也有可以相關的介紹。

張貼留言

注意:只有此網誌的成員可以留言。