C++四種cast

2020-08-13 10:02:46

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

1,const_cast

這個操作符可以去掉變數const屬性或者volatile屬性的轉換符,這樣就可以更改const變數了。

2,static_cast

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

3,dynamic_cast

dynamic_cast操作符 可以安全的將父類別轉化爲子類,子類轉化爲父類別都是安全的。所以你可以用於安全的將基礎類別轉化爲繼承類,而且可以知道是否成功,如果強制轉換的是指針型別,失敗會返回NULL指針,如果強制轉化的是參照型別,失敗會拋出異常。

4,reinterpret_cast

dynamic_cast 轉換符只能用於含有虛擬函式的類。