如果在**中沒有提供拷貝建構函式,那麼c++會自動建立乙個拷貝建構函式。這個預設的拷貝建構函式,不是位元組對位元組的拷貝,而是成員對成員的拷貝。做成員變數對成員變數的拷貝。
在 a類中,如果成員變數是int
,則拷貝給int
,如果是float
,則拷給float
,如果是另乙個類b b 的成員,則會用b 的拷貝構造去拷貝構造b,如果b類給出的是預設的拷貝構造(系統給的),那麼拷貝構造就會遞迴下去。
同時,c++中對於拷貝構造的優化,當兩個拷貝構造在連續時系統會優化為一次拷貝構造。
簡單的講就是:一次拷貝構造之後把構造的物件沒有放置,而是直接用做下乙個拷貝構造的引數,則這兩次的拷貝構造被優化為一次,但得注意:優化時,前乙個必須是形參或者臨時建立的物件。
比如
a copy_func(char *name)
優化為:
a nocopy_func(char *name)
int main()
c 建構函式 拷貝建構函式 c 複習 二
c param mark 資料型別 string代替char void tv power 有且只有一次的初始化,根據條件初始化 建構函式例項化時被自動呼叫 建構函式與類名同名 建構函式沒有返回值 建構函式可以進行過載 例項化物件時建構函式有且只用到一次 使用者沒有定義建構函式時,編譯器自動生成建構函...
C 類(拷貝建構函式)(二)
拷貝建構函式是一種特殊的建構函式,它在建立物件時,是使用同一類中之前建立的物件來初始化新建立的物件。拷貝建構函式通常用於 如果在類中沒有定義拷貝建構函式,編譯器會自行定義乙個。如果類帶有指標變數,並有動態記憶體分配,則它必須有乙個拷貝建構函式。拷貝建構函式的最常見形式如下 classname con...
c 拷貝構造
當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 乙個物件以值傳遞的方式從函式返回 乙個物件需要通過另外乙個物件進行初始化。補充說...