感覺在面試中,總是被問及轉換類型問題,所以在大面試來臨之前,複習一下,其實之前也沒有怎麼區分,因為實際中,特別是編一個小程式,我不是經常在用。
以下是C++的四種轉換機制:
view plaincopy to clipboardprint?
- const_cast<T> ( expression )
- dynamic_cast<T> ( expression )
- reinterpret_cast<T> ( expression )
- static_cast<T> ( expression )
- const_cast通常被用來將對象的常量性質轉除。它也是唯一有此功能的C++-Style轉型操作符。其意思是將一個const轉化為non-const。
- dynamic_cast主要用來執行”安全向下轉型“,也就是用來決定某對象是否歸屬繼承體系中的某個類型。它也是唯一無法由舊式文法執行的動作,也是唯一可能耗費重大運行成本的轉型動作。
- reinterpret_cast意圖執行低級轉型,實際動作可能取決編譯器,這也就是表明它不可移植。
- static_cast用來強迫隱式轉換,例如將non-const對象專為const對象,或將int轉換成double等等,它也可以用來執行上述多種類型的反向轉換,例如將void*指標專為typed指標,將pointer-to-base轉為pointer-to-derived。但無法將const轉為non-const這個只有const_cast才能做到。
註:文本來自《Effective C++》
-----------------打造高品質的文章 更多關注 把酒泯恩仇---------------
為了打造高品質的文章,請 推薦 一下吧。。。。謝謝了,請關注我後續的文章,會更精彩哦
請關注sina微博:http://weibo.com/baiyang26
把酒泯恩仇官方部落格:http://www.ibaiyang.org 【推薦用google reader訂閱】
把酒泯恩仇官方豆瓣:http://www.douban.com/people/baiyang26/
如果您想轉載本部落格,請註明出處
如果您對本文有意見或者建議,歡迎留言