標籤:
C++類型轉換分為:隱式類型轉換和顯式類型轉換
隱式轉換
包括以下幾種情況:
1、算術轉換(Arithmetic conversion) : 在混合類型的算術運算式中, 最寬的資料類型成為目標轉換類型。
2、一種類型運算式賦值給另一種類型的對象:目標類型是被賦值對象的類型
3、將一個運算式作為實參傳遞給函數調用,此時形參和實參類型不一致:目標轉換類型為形參的類型
4、從一個函數返回一個運算式,運算式類型與傳回型別不一致:目標轉換類型為函數的傳回型別
顯示轉換
被稱為“強制類型轉換”(cast)
C 風格: (type-id)使用括弧
C++風格: static_cast、dynamic_cast、reinterpret_cast、和const_cast這四個
1、const_cast
用法:const_cast<type_id> (expression)
說明:該運算子用來修改類型的const或volatile屬性。除了const 或volatile修飾之外, type_id和expression的類型是一樣的。
注意:
必須使用指標或者引用,其實並不是真的改變原類類型(或基本類型)的const屬性,它只是又提供了一個介面(指標或引用),可以
通過這個介面來改變類型值。
2、static_cast
用法:static_cast < type-id > ( expression )
說明:編譯器隱式指向的任何類型轉換都可以由static_cast顯式的完成
3、reinpreter_cast
用法:reinpreter_cast<type-id> (expression)
說明:type-id必須是一個指標、引用、算術類型、函數指標或者成員指標。它可以把一個指標轉換成一個整數,也可以把一個整數轉換成一個指標(先把一個指標轉換成一個整數,在把該整數轉換成原類型的指標,還可以得到原先的指標值)。
4、dynamic_cast
用法:dynamic_cast < type-id > ( expression )
說明:該運算子把expression轉換成type-id類型的對象。Type-id必須是類的指標、類的引用或者void *;如果type-id是類指標類型,那麼expression也必須是一個指標,如果type-id是一個引用,那麼expression也必須是一個引用。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
C++類型轉換