在c語言中,型別轉換是這樣子的
void test ()
但是這樣的轉換有很大的缺陷:
轉換的可視性非常差,所以的轉換形式都是同一種方式書寫的,很難去跟蹤錯誤的轉換
轉換太過隨意,可以在任意型別之間轉換。你可以把乙個指向const物件的指標轉換成指向非const物件的指標,把乙個指向基類物件的指標轉換成乙個派生類物件的指標,這些轉換之間的差距是非常巨大的,但是傳統的c語言風格的型別轉換沒有區分這些
c風格的轉換沒有統一的關鍵字和標示符。對於大型系統,做**排查時容易遺漏和忽略。
而標準c++為了加強型別轉換的可視性,引入了四種命名的強制型別轉換操作符:static_cast,reinterpret_cast,const_cast,dynamic_cast。
1.基本用法:static_cast expression
2.使用場景:
a、用於類層次結構中基類和派生類之間指標或引用的轉換
上行轉換(派生類---->基類)是安全的;
下行轉換(基類---->派生類)由於沒有動態型別檢查,所以是不安全的。
b、用於基本資料型別之間的轉換,如把int轉換為char,這種帶來安全性問題由程式設計師來保證
c、把空指標轉換成目標型別的空指標
d、把任何型別的表示式轉為void型別
3.使用特點
a、主要執行非多型的轉換操作,用於代替c中通常的轉換操作
b、隱式轉換都建議使用static_cast進行標明和替換
int main()
1.基本用法:const_cast expression
2.使用場景:
a、常量指標轉換為非常量指標,並且仍然指向原來的物件
b、常量引用被轉換為非常量引用,並且仍然指向原來的物件
3.使用特點:
a、cosnt_cast是四種型別轉換符中唯一可以對常量進行操作的轉換符
b、去除常量性是乙個危險的動作,盡量避免使用。乙個特定的場景是:類通過const提供過載時,一般都是非常量函式呼叫const_cast將引數轉換為常量,然後呼叫常量函式,然後得到結果再呼叫const_cast 去除常量性。
void test ()
};class b : public a
{};void fun (a* pa)
mysql型別轉換c 型別轉換 C 型別轉換
一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...
C 的型別轉換
2008 03 15 12 59 強制型別轉換容易引發錯誤,所以被認為是一種醜陋的語法。c 中有乙個觀念 醜陋的語法就應該用醜陋的方式表達。所以,c 的轉換操作符使用 x cast 這種一種繁瑣的形式。目的是為了讓你在使用型別轉換前三思而行,看看是不是又不需要型別轉換的方法或設計。更重要的是,c風格...
C 型別的轉換
型別的轉換c 中型別轉換 顯隱 的機制分為兩種 一 隱式轉換 implicit conversions 二 顯式轉換 explict conversions 隱式轉換不需要指明欲轉變的型別 顯式轉換明確地使用轉換運算子 cast 指定要轉換成哪一種型別。c 允許程式設計師如果對於溢位進行處理 che...