建構函式可以使用兩種方式進行分類:
按引數分為:無參構造和有參構造
按型別分為:普通構造和拷貝構造
classperson
//有參構造
person(int
a)
//拷貝建構函式
person(const person &p)
intage;
};
建構函式的呼叫有三種方法:
1:括號法
person p1;//預設建構函式的呼叫
person p2(10);//
有參建構函式的呼叫
person p3(p2);//
拷貝建構函式的呼叫
注意事項:呼叫預設建構函式是不要加(),加上小括號後編譯器會這是認為乙個函式的宣告。
2:顯示法
person p1;//預設建構函式的呼叫
person p2=person(10);//
有參建構函式的呼叫
person p3=person(p2);//
拷貝建構函式的呼叫
person(10);為匿名物件,特點:當前執行結束後,系統會立刻**匿名物件。
注意事項:不要用拷貝建構函式初始化匿名物件
3:隱式轉換法
person p2=10;//相當於 寫了 person p2=person(10) 有參建構函式的呼叫
person p3=p2;//
拷貝建構函式的呼叫
拷貝建構函式的呼叫時機:
1.使用乙個已經建立完的物件來初始化乙個新物件
person p1(10);person p2(p1);
2.值傳遞的方式給函式引數傳值
3.以值方式返回區域性物件
深拷貝和淺拷貝的問題:
淺拷貝:常見的賦值拷貝操作
如果用編譯器提供的拷貝建構函式,會做淺拷貝操作。淺拷貝帶來的問題是堆區的記憶體重複釋放。
深拷貝:在堆區間重新申請空間,進行拷貝操作
C 建構函式的分類和呼叫
每日心得 獨上高樓,望盡天涯路 日期 12.13 學習內容 建構函式的分類和呼叫 重點 兩種分類方式 按引數分為 有參構造 和 無參構造 按型別分為 普通構造 和 複製構造 三種呼叫方式 括號法 顯示法 隱式轉化法 include using namespace std 建構函式的分類及呼叫 分類 ...
構造函式呼叫建構函式
題目如下 問下列 的列印結果為0嗎?include stdlib.h include iostream using namespace std struct clscls int main 列印結果是不定的,不一定為0 奇怪的地方在於建構函式中呼叫了自己的另乙個建構函式 我們知道,當定義乙個物件時,...
建構函式的呼叫
傳智掃地僧課程學習筆記。無參建構函式,有參建構函式,拷貝建構函式,決定,用乙個物件給另乙個物件賦值時候,怎麼去操作,void main22 0呼叫無參建構函式 test2 t0 1括號法 test2 t1 1,2 呼叫引數建構函式 c 編譯器自動的呼叫建構函式 t1.printt 2 號法 test...