自定義拷貝建構函式
類名::類名(const 類名 &物件名)
拷貝建構函式的函式體
利用下述語句呼叫拷貝建構函式
rectangle p2(p1);
#include
using namespace std;
class rectangle
{public:
rectangle(int len,int wid)
{length=len;
width=wid;
cout<<"using normal constructing"p1.display();
p2.display();
return 0;
當把自定義拷貝建構函式去掉
#include
using namespace std;
class rectangle
{public:
rectangle(int len,int wid)
{length=len;
width=wid;
cout<<"using normal constructing"《輸出結果
using normal constructing
30 40
30 40
30 40
上面由於沒用使用者自定義的拷貝建構函式,因此在定義p2 p3 的時候用代入法 賦值法的形式後,呼叫了系統預設的拷貝建構函式,導致p2 p3 與p1的資料成員的值完全相同
拷貝建構函式,預設拷貝建構函式
拷貝建構函式,預設拷貝建構函式 1.c 的預設拷貝建構函式,從深度拷貝和淺拷貝說起 c 類的預設拷貝建構函式的弊端 c 類的中有兩個特殊的建構函式,1 無參建構函式,2 拷貝建構函式。它們的特殊之處在於 1 當類中沒有定義任何建構函式時,編譯器會預設提供乙個無參建構函式且其函式體為空 2 當類中沒有...
預設拷貝建構函式
1.什麼時候用到拷貝建構函式?以乙個已經存在的物件初始化同型別的另乙個物件時,如 class a a a a aa a 作為函式引數時,產生臨時物件,呼叫拷貝建構函式進行初始化 void fun a a 作為函式返回值時,產生臨時物件 a fun a a return a 產生臨時物件,並呼叫拷貝建...
小心,自定義拷貝函式
目錄編譯器在生成拷貝函式時會對所有的類一視同仁,不會特殊情況特殊處理,它只是簡單地將原物件的每乙個non static資料成員拷貝到目標物件中,這就是所說的淺拷貝。這個過程簡單粗暴,如果類中有動態配置的記憶體,物件中包含資源,問題就會隨之而產生。首先,我們需要了解一下淺拷貝與深拷貝可能會產生的問題。...