格式 person(const person&p);
person視為乙個任意的類名
const 使p的成員值不能發生改變
(1)括號法
person p1;
person p2(10);//有參建構函式
person p3(p2);//呼叫拷貝建構函式
注意事項:呼叫預設建構函式時,不要加()
解釋:加括號時,編譯器會認為時乙個函式的宣告,不會建立乙個物件
(2)顯示法
person p2=person(10);//有參構造
person p3=person(p2);//拷貝構造
單獨拿出person(10) 為乙個匿名物件,當前執行結束後,會直接**掉匿名物件
注意事項:不要利用拷貝建構函式來初始化乙個匿名物件 person(p3);編譯器會認為
person p3 重定義了,會報錯
(3)隱式轉換法;
person p4=10==person p4=person(10)//有參構造;
person p5=p4;拷貝構造;
使用乙個已經建立完畢的物件來初始化乙個新的物件
值傳遞的方式給函式引數傳遞
以值方式返回區域性物件1:
person p1(20);
person p2(p1);
2:void dowore(person p)
person p;
dowore(p);//傳遞時會呼叫拷貝函式
3:person dowork()
person p=dowork();//呼叫拷貝構造,按照p1物件返回拷貝乙個和p1一樣的物件
拷貝建構函式 筆記
乙個建構函式的引數是自身類型別的引用,且任何額外引數都有預設值,則此建構函式是拷貝建構函式。class foo如果我們沒有為類定義拷貝建構函式,編譯器會為我們定義乙個。與合成預設建構函式不同,即使我們定義了其他建構函式,編譯器也會為我們合成乙個拷貝建構函式。合成的拷貝建構函式會將引數的成員逐個拷貝到...
oc建構函式筆記
1,建構函式的作用 用來對alloc建立的物件 及用alloc來分配儲存空間,是一塊 地 進行初始化。如果初始化失敗,則返回nil。2,如果是無參建構函式,函式名必須是init。返回值必須是id,函式前面必須是 號,如 id init 系統會自帶乙個無參的建構函式,作用是將當前物件的所有成員的內容初...
呼叫建構函式筆記
include using namespace std class cpoint 帶乙個引數的可用於型別轉換的建構函式 explicit 加上 explicit 可防止 cpoint pt1 1 這種隱性轉換 cpoint int ix 帶引數的建構函式 cpoint int ix,int iy 拷...