C++ 知識點小結(一)

https://blog.csdn.net/bian_qing_quan11/article/details/70788312 

一、變量初始化四種方式

int a=0;
int a(0);
int a={0};
int a{0};
後邊兩種屬於列表初始化方式,不允許信息丟失,比如 double值初始化int變量

二、類型轉換

C++ 四種強制類型轉換操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast

 static_cast  與  dynamic_cast:
    前者提供的是編譯時期的靜態類型檢測,後者提供的是運行時檢測.
   static_cast: 1)完成基礎數據類型,2)同一個繼承體系中類型的轉換 3)任意類型與空指針類型void*之間的轉換。

   dynamic_cast:使用多態的場景,增加了一層對真實調用對象類型的檢查

1、  static_cast:

功能:完成編譯器認可的隱式類型轉換。

格式type1 a;

type2 b = staic_cast<type1>(a);將type1的類型轉化爲type2的類型;

使用範圍:

(1)基本數據類型之間的轉換,如int->double;

int a = 6;

double b = static_cast<int>(a);

(2)派生體系中向上轉型:將派生類指針或引用轉化爲基類指針或引用(向上轉型);


2、  dynamic_cast

功能:執行派生類指針或引用與基類指針或引用之間的轉換。

格式:

(1)      其他三種都是編譯時完成的,dynamic_cast是運行時處理的,運行時要進行運行時類型檢查;

(2)      基類中要有虛函數,因爲運行時類型檢查的類型信息在虛函數表中,有虛函數纔會有虛函數表;

(3)      可以實現向上轉型和向下轉型,前提是必須使用public或protected繼承;

3、const_cast:

只能對指針或者引用去除或者添加const屬性,對於變量直接類型不能使用const_cast;不能用於不同類型之間的轉換,只能改變同種類型的const屬性。

const_cast的用法:

(1)常用於函數的形參是一個非const的引用,我想要穿進去一個const的引用,可以使用const_cast<Type&>para;去除實參的常量性,以便函數能夠接受這個參數。

(2)一個const對象,我們想要調用該對象中的非const函數,可以使用const_cast去除對象的常量性;

4、reinterpret_cast:

從字面意思理解是一個“重新解釋的類型轉換”。也就是說對任意兩個類型之間的變量我們都可以個使用reinterpret_cast在他們之間相互轉換,無視類型信息。

不常使用


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章