拷貝建構函式:只有單個形參,並且該形參時本類物件的引用(經常使用const修飾)的建構函式.
預設拷貝建構函式:
在沒有定義拷貝建構函式的時候,編譯器將自動生成乙個
預設拷貝建構函式將執行的操作:對該類的每個成員執行初始化(
對於基礎型別直接賦值,對於其所有物件成員逐個呼叫其對應的拷貝建構函式.)
特別的:倘若乙個類擁有陣列成員,預設拷貝建構函式將複製陣列(即複製陣列中的每乙個元素).
自定義拷貝建構函式:
只包含物件成員或基礎型別成員的類(即不包含指標),無需顯示定義拷貝建構函式.使用預設的即可.
包含指標成員的類,倘若必須自定義拷貝建構函式(或者定義未定義的私有拷貝建構函式以放置被外部拷貝). 倘若要在拷貝建構函式時需要做一些操作也應該自定義拷貝建構函式.
禁止呼叫拷貝建構函式:
將拷貝建構函式顯示宣告為私有.(如果連友元和成員函式也禁止執行拷貝操作,則宣告拷貝構造為私有後不進行定義)
=過載:
類的預設賦值函式:
在沒有過載賦值函式時,編譯器將自動生成乙個.
預設賦值函式將執行的操作:對該類的每個成員執行賦值操作(對於基礎型別直接賦值,對於其所有物件成員逐個呼叫其對應的賦值函式.)倘若乙個類擁有陣列成員,預設賦值函式將對陣列中的每乙個元素執行賦值操作.
[自定義賦值函式]的條件和拷貝建構函式相同.
[禁止賦值函式]的方法同樣和拷貝建構函式相同.
賦值和拷貝構造經常一起使用,通常在用到其中乙個時,幾乎肯定同時會用到另乙個
拷貝建構函式與賦值建構函式
include stdafx.h include include using namespace std class a a a a 過載拷貝函式 a int id,char t name a char name a operator a a 注意 此處一定要返回物件的引用,否則返回後其值立即消失!...
拷貝建構函式與賦值建構函式
什麼時候用拷貝建構函式,和賦值建構函式 一 當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 乙個物件以值傳遞的方式從函式返回 乙...
拷貝建構函式與賦值函式
為了便於說明我們以string類為例 首先定義string類,而並不實現其成員函式。class string 位拷貝拷貝的是位址,而值拷貝則拷貝的是內容。如果定義兩個string物件a和b。a.m data和b.m data分別指向一段區域,a.m data windows b.m data lin...