關於c 的預設拷貝建構函式

2022-08-17 14:15:22 字數 708 閱讀 7733

copy constructor

《inside the c++ object model》是本非常好的書,特別是幫助對類的構造和析構的理解。

下面我要是的乙個就是關於c++預設的拷貝建構函式;一般我們用到它在以下情況

// class a ;

a aa; // default ctor

a a = aa; // copy ctor

//void func(a a)

func(a) // copy ctor

a f()

f(); // copy ctor

// 以下是我遇到與下面相似問題時的產生的這個思考

class b : public a // a沒有explicit copy constructor

// todo

};

​ 當我沒在a中定義自己的copy constructor,便會使用類自動生成的預設copy constructor,那麼預設生成的這個函式行為是什麼呢?

​ 其實這裡有個default memberwise initialization的東西,就是把每乙個data member的值拷貝過去,(貌似遇到指標,會出現淺拷貝的情況)但是他不會拷貝其中的 member class object, 而是以遞迴的方式實施 memberwise initialization。

拷貝建構函式,預設拷貝建構函式

拷貝建構函式,預設拷貝建構函式 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 產生臨時物件,並呼叫拷貝建...

C 有關拷貝建構函式(預設 淺 深拷貝建構函式)

拷貝結構函式顧名思義就是複製物件。先講一下預設拷貝函式 預設拷貝就是直接賦值,讓程式呼叫預設拷貝結構函式。student p1 student p2 p1 或者student p2 p1 程式開始執行時,建立p1物件,p1物件的建構函式從堆中分配空間並賦給資料成員pname,執行,p2 p1時,因為...