過載賦值運算子與拷貝建構函式的區別

2021-06-27 05:30:25 字數 772 閱讀 1347

#include

using namespace std;

#include

class namelist

namelist();//預設建構函式

namelist(namelist&);//拷貝建構函式

namelist& operator=(char *p );

namelist& operator=( 

namelist& ); 

void display()

};namelist::namelist(namelist& a)//定義拷貝建構函式

namelist& namelist::operator=( char *p)//

//第乙個過載賦值運算子,完成用常量給物件賦值

namelist& namelist::operator=( 

namelist& a)

//第二個過載賦值運算子,完成類物件之間的賦值

return *this;

} int main()

總結:拷貝建構函式發生在下面三種情況下:

在c++中,下面三種物件需要呼叫拷貝建構函式:

1) 乙個物件以值傳遞的方式傳入函式體;

2) 乙個物件以值傳遞的方式從函式返回;

3) 乙個物件需要通過另外乙個物件進行初始化;

深拷貝和淺拷貝的定義可以簡單理解成:如果乙個類擁有資源(堆,或者是其它系統資源),當這個類的物件發生複製過程的時候,這個過程就可以叫做深拷貝,反之物件存在資源但複製過程並未複製資源的情況視為淺拷貝。 

拷貝建構函式與賦值運算子過載

拷貝建構函式 只有單個形參,該形參是對本類型別物件的引用 一般常用const修飾 在用已存在的類型別物件建立新物件時由編譯器自動呼叫。1.拷貝建構函式是建構函式的乙個過載形式 class date date const date d private int year int month int da...

拷貝建構函式與過載賦值運算子

注意 該作者部落格已遷移至 如果乙個建構函式的第乙個引數是自身類型別的引用,且任何額外的引數都有預設值,則此建構函式是拷貝建構函式。c premier裡的定義 拷貝建構函式應用的場景 預設拷貝建構函式 class ctest ctest void test ctest obj intmain 這個程...

拷貝構造與過載賦值運算子

編譯器預設的拷貝建構函式,發生的是memberwise initialization 成員逐一初始化 類的成員變數被逐一複製。而預設賦值運算子,也是逐一複製成員變數。一旦成員變數中,有程式設計師在heap開闢的空間 指標,new 使用預設拷貝建構函式就會引起淺拷貝和深拷貝的問題。include us...