拷貝建構函式主要在以下三種情況下起初始化作用:
1. 在宣告語句中用乙個物件初始化另乙個物件;
2. 將乙個物件作為引數按值呼叫方式傳遞給另乙個物件時生成物件副本;
3. 生成乙個臨時物件作為函式的返回結果。(這種情況只有在windwos下是真的,我只是在windos xp + vc 6.0)
以下面的**為例:
//#include
class copyclasstest
copyclasstest(copyclasstest const &a)
};void processcall(copyclasstest a)
copyclasstest processcall2()
int main()
在windows xp + vc 6.0的環境下,結果是:
constructor //對應的是main函式中的
copyclasstest one;
copy constructor//對應的是main函式中的
copyclasstest two = one;
copy constructor//對應的是main函式中的
processcall(one); 函式呼叫要生成乙個臨時變數,所以呼叫了copy constructor
process call 1
process call 2
constructor//對應的是
processcall2中的
copyclasstest temp;
copy constructor//對應的是
processcall2中的
return
temp;
在linux localhost.localdomain 2.6.9-78.elsmp #1 smp wed jul 9 15:39:47 edt 2008 i686 i686 i386 gnu/linux + gcc version 3.4.6 20060404 (red hat 3.4.6-10)環境下,結果是:
constructor
copy constructor
copy constructor
process call 1
process call 2
constructor
C 拷貝建構函式的呼叫
晚上做c 作業,碰到乙個拷貝函式的問題,看了會書也沒太看明白,回到寢室馬上試驗了下才差不多弄清楚了拷貝建構函式及臨時物件的呼叫。拷貝建構函式主要在以下三種情況下起初始化作用 1.在宣告語句中用乙個物件初始化另乙個物件 2.將乙個物件作為引數按值呼叫方式傳遞給另乙個物件時生成物件副本 3.生成乙個臨時...
呼叫C 複製建構函式和拷貝建構函式
呼叫c 複製建構函式和拷貝建構函式 1.何時呼叫複製建構函式 複製建構函式用於將乙個物件複製到新建立的物件中。也就是說,它用於初始化過程中,而不是常規的賦值過程中。類的複製建構函式原型通常如下 class name const class name 它接受乙個指向類物件的常量引用作為引數。例如,st...
C 建構函式 析構函式和拷貝構造的呼叫
建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。析構函式 destructor 與建構函式相反,當物件結束其生命週期,如物件所在的函式已呼叫完畢時,系統自動執行析構函式。析構函式往往用來做 清理善後 的工作。拷貝建構函式是一種特殊的建構函式,其...