程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 《Effective C++》學習筆記條款27 盡量少做轉型動作

《Effective C++》學習筆記條款27 盡量少做轉型動作

編輯:C++入門知識

條款27:盡量少做轉型動作
C++規則的設計目標之一是,保證“類型錯誤”絕不可能發生。不幸的是,轉型(casts)破壞了類型系統。那可能

導致任何種類的麻煩,有些容易辨識,有些非常隱晦。

C風格的轉型動作看起來像這樣:

(T)expression //將expression轉型為T

函數風格的轉型動作看起來像這樣:

T(expression) //將expression轉型為T

C++還提供四種新式轉型:

const_cast:通常被用來將對象的常量性轉除;即去掉const。
dynamic_cast:主要用來執行“安全向下轉型”,也就是用來決定某對象是否歸屬繼承體系中的某個類型。
reinterpret_cast:意圖執行低級轉型,實際動作可能取決於編譯器,這也就表示它不可移植。
static_cast:用來強迫隱式轉換,例如將non-const轉型為const,int轉型為double等等。

盡量使用新式轉型:

· 它們很容易在代碼中被辨識出來,因而得以簡化“找出類型系統在哪個地點被破壞”的過程。

· 各轉型動作的目標愈窄化,編譯器愈可能診斷出錯誤的運用。

請記住:

· 如果可以,盡量避免轉型,特別是在注重效率的代碼中避免dynamic_casts。如果有個設計需要轉型動作,試著發展

無需轉型的替代設計。

· 如果轉型是必要的,試著將它隱藏於某個函數背後。客戶隨後可以調用該函數,而不需將轉型放進他們自己的代碼

內。

· 寧可使用C++-style(新式)轉型,不要使用舊式轉型。前者很容易辨識出來,而且也比較有著分門別類的執掌。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved