C 的型別轉換

2021-09-26 01:09:38 字數 1340 閱讀 7113

在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...