C++primer小結--第二篇

初始化賦值的區別

初始化指創建變量並給它賦初值,而賦值是擦除對象的當前值並用新值代替。

C++支持複製初始化(int val = 1024; )和直接初始化(int ival(1024);)。其中,複製初始化首先使用指定構造函數創建一臨時對象,然後用複製構造函數將那個臨時對象複製到正在創建的對象(爲了與C兼容啊~);直接初始化則直接調用與實參匹配的構造函數。

const對象可以初始化,但是不可以賦值。

構造函數分兩個階段執行:1)初始化階段(執行構造函數初始化列表或是使用如下規則a來初始化)2)普通計算階段(執行構造函數{}內的代碼)

規則a:內置類型變量,函數體外定義的初始化爲0,函數體內定義的不進行自動初始化。類類型變量,調用該類的默認構造函數進行初始化。

構造函數

默認構造函數:爲所有形參提供默認實參的構造函數(使用情況:定義一個未提供初始化式的對象)

合成的默認構造函數:類中沒有定義任何構造函數,由編譯器生成。

如果一個類沒有默認構造函數(有其它的構造函數,因爲合成的默認構造函數也是默認構造函數),這個類類型就不能用作動態分配數組的元素類型。

複製構造函數:只具有單個形參,且該形參是對本類類型對象的引用。(使用情況:分配內存或其它資源的類,需要自定義虛構函數的類,這些類都需要自定義複製構造函數)

合成的複製構造函數:類中沒有定義複製構造函數,由編譯器生成。

析構函數:類名前加~,沒有形參和返回值。

合成析構函數:編譯器總是自動生成,先運行自定義的析構函數(如果有的話),然後運行合成的析構函數。

 

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