自定義拷貝建構函式 預設的拷貝建構函式

2021-07-27 21:52:14 字數 747 閱讀 6652

自定義拷貝建構函式

類名::類名(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資料成員拷貝到目標物件中,這就是所說的淺拷貝。這個過程簡單粗暴,如果類中有動態配置的記憶體,物件中包含資源,問題就會隨之而產生。首先,我們需要了解一下淺拷貝與深拷貝可能會產生的問題。...