在上一節中的4.4 -隱式型別轉換(強制),你知道,編譯器有時會隱式轉換乙個值從乙個資料型別到另乙個。當您想從乙個資料型別提公升到乙個更大的類似資料型別的值時,使用隱式型別轉換系統是好的。
許多新的程式設計師嘗試這樣的東西:浮動f = 10 / 4;。然而,因為10和4都是整數,沒有公升級發生。在10 / 4上執行整數除法,產生2的值,然後將其隱式轉換為2,並賦給f!
在使用文字值(如10或4)的情況下,用浮點文字值(或10)替換乙個或兩個整數的文字值(或4),將導致兩個運算元轉換為浮點值,並使用浮點數學來完成除法運算。
但是,如果你使用的變數是什麼?考慮這種情況:
int i1 = 10;
int i2 = 4;
float f = i1 / i2;
變數f將以2的值結束。我們如何告訴編譯器,我們要使用浮點除法,而不是整數除法?答案是通過使用一種型別的操作符(通常被稱為乙個演員)來告訴編譯器做顯式型別轉換。乙個演員是由程式設計師做乙個型別轉換的乙個明確的要求。
型鑄造在c++中,有5種不同型別的轉換:c風格轉換,靜態模型,動態模型,並將const,reinterpret cast。
我們將在本課c風格轉換和靜態模型。動態轉換,我們將儲存,直到我們覆蓋指標和繼承。
const轉換和reinterpret cast一般應避免因為他們在罕見的情況下才有用,可能是有害的如果使用不當。
規則:避免const轉換和reinterpret cast的除非你有乙個很好的理由去使用它們。
2
3int i1 = 10;
int i2 = 4;
float f = (float)i1 / i2;
static_cast的主要優點是它提供了編譯時型別檢查,很難做乙個無心的錯誤。static_cast也(故意)比c風格轉換不那麼強大,所以你不能不小心刪除const或你可能沒有打算做其他的事情。
使用強制轉換來進行隱式轉換清除
當執行不安全的隱式型別轉換時,編譯器會經常抱怨。例如,考慮下面的程式:
OMT 物件模型 動態模型和功能模型
物件模型描述系統中物件的靜態結構 物件之間的關係 物件的屬性 物件的操作。物件模型表示靜態的 結構上的 系統的 資料 特徵。物件模型為動態模型和功能模型提供了基本的框架,物件模型用包含物件和類的物件圖來表示。omt的物件模型中除了物件 類 繼承外,還有一些其他的概念,下面介紹幾個主要的概念。1 鏈 ...
C 靜態庫與動態庫 C 物件模型
c 靜態庫與動態庫 c 物件模型 stl運用的c 技術 1.程式使用記憶體區 乙個程式占用的記憶體區一般分為5種 1 全域性 靜態資料區 儲存全域性變數及靜態變數 包括全域性靜態變數和區域性靜態變數 2 常量資料區 儲存程式中的常量字串等。3 區 儲存程式的 4 棧 儲存自動變數或者區域性變數,以及...
什麼是動態模型
動態模型著重於系統的控制邏輯,考察在任何時候物件及其關係的改變,描述這些涉及時序和改變的狀態。動態模型包括狀態圖和事件跟蹤圖。狀態圖是乙個狀態和事件的網路,側重於描述每一類物件的動態行為。事件跟蹤圖則側重於說明系統執行過程中的乙個特點 場景 也叫做指令碼 scenarios 是完成 系統某個功能的乙...