C 四個cast的用法

2021-10-07 03:14:14 字數 1129 閱讀 6952

c++的強制轉換方式比c語言更加豐富,常見的有四個:

1,const_cast

2,static_cast

3,dynamic_cast

4,reinterpret_cast

這四個的使用方式都一樣:t t = ***_cast(expressions)。

1,const_cast這個操作符可以去掉變數const屬性或者volatile屬性的轉換符,這樣就可以更改const變數了。比如下面**

string str =

"hello"

;char

*_const = str.

substr(0

,3).

c_str()

;//c_str()返回const char*型別,直接賦值給char *顯然出錯,這句話編譯不能通過

char

*non_const = const_cast<

char

*>

(str.

substr(0

,3).

c_str()

);//將const屬性移除,可以通過編譯了

2,static_cast 這個操作符相當於c語言中的強制型別轉換的替代品。多用於非多型型別的轉換,比如說將int轉化為double。但是不可以將兩個無關的型別互相轉化。(在編譯時期進行轉換)

3,dynamic_cast操作符 可以安全的將父類轉化為子類,子類轉化為父類都是安全的。所以你可以用於安全的將基類轉化為繼承類,而且可以知道是否成功,如果強制轉換的是指標型別,失敗會返回null指標,如果強制轉化的是引用型別,失敗會丟擲異常。dynamic_cast 轉換符只能用於含有虛函式的類。用乙個簡單的**例子可以看出

#include

using namespace std;

class animal };

class dog : public animal };

class wolf : public animal };

class nonrelated };

intmain()

4, reinterpret_cast:重新解釋(無理)轉換。即要求編譯器將兩種無關聯的型別作轉換。

C 四種cast常用法

用法 static cast type id expression 1.用於類層次結構中基類和子類之間指標或引用的轉換。進行上行轉換 把子類的指標或引用轉換成基類表示 是安全的 進行下行轉換 把基類指標或引用轉換成子類表示 時,由於沒有動態型別檢查,所以是不安全的。2.用於基本資料型別之間的轉換,如...

C 的四個基本技巧

1 如果可能盡量使用介面來程式設計 net框架包括類和介面,在編寫程式的時候,你可能知道正在用.net的哪個類。然而,在這種情況下如果你用.net支援的介面而不是它的類來程式設計時,會變得更加穩定 可用性會更高。請分析下面的 private void loadlist object items,li...

C 的四個基本技巧

1 如果可能盡量使用介面來程式設計 net框架包括類和介面,在編寫程式的時候,你可能知道正在用.net的哪個類。然而,在這種情況下如果你用.net支援的介面而不是它的類來程式設計時,會變得更加穩定 可用性會更高。請分析下面的 private void loadlist object items,li...