拷貝建構函式的作用

2021-05-25 16:22:14 字數 1333 閱讀 6031

拷貝建構函式首先是乙個建構函式,它呼叫的時候產生乙個物件,是通過引數傳進來的那個物件來初始化,產生的物件。 operator=();是把乙個物件賦值給乙個原有的物件,所以如果原來的物件中有記憶體分配要先把記憶體釋放掉,而且還要檢查一下兩個物件是不是同乙個物件,如果是的話就不做任何操作。

還要注意的是拷貝建構函式是建構函式,不返回值

而賦值函式需要返回乙個物件自身的引用,以便賦值之後的操作 鏈式操作

你肯定知道這個:

int a, b;

b = 7;

func( a = b ); // 把i賦值後傳給函式func( int )

同理:

cmyclass obj1, obj2;

obj1.initialize();

func2( obj1 = obj2 ); //如果沒有返回引用,是不能把值傳給func2的

注: cmyclass & cmyclass:: operator = ( cmyclass & other )

if( this == &other )

return *this;

// 賦值操作...

return *this

呼叫拷貝建構函式的生成物件的方式是,用乙個以有的物件的樣子去構造乙個新的各屬性值一樣的物件。如有類定義如下:

在c++語言裡,

string s2(s1);

string s3 = s1;

只是語法形式的不同,意義是一樣的,都是定義加初始化,都呼叫拷貝建構函式。

#include

#include

using namespace std;

class a

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

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

namelist& operator=(char *p );

namelist& operator=( namelist& );

void display()

~ namelist ()

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

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

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

namelist& namelist::operator=( namelist& a)

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

return *this;

} int main()

拷貝建構函式的作用

拷貝建構函式首先是乙個建構函式,它呼叫的時候產生乙個物件,是通過引數傳進來的那個物件來初始化,產生的物件。operator 是把乙個物件賦值給乙個原有的物件,所以如果原來的物件中有記憶體分配要先把記憶體釋放掉,而且還要檢查一下兩個物件是不是同乙個物件,如果是的話就不做任何操作。還要注意的是拷貝建構函...

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

拷貝建構函式,預設拷貝建構函式 1.c 的預設拷貝建構函式,從深度拷貝和淺拷貝說起 c 類的預設拷貝建構函式的弊端 c 類的中有兩個特殊的建構函式,1 無參建構函式,2 拷貝建構函式。它們的特殊之處在於 1 當類中沒有定義任何建構函式時,編譯器會預設提供乙個無參建構函式且其函式體為空 2 當類中沒有...

建構函式 拷貝建構函式

建構函式可以分為三類 1 不帶引數的建構函式 在函式體中對資料成員賦初值,這種方式使該類的每乙個物件都得到同一組初值 2 帶引數的建構函式 如果使用者希望對不同的物件賦不同的初值,可以採用帶引數的建構函式。在呼叫不同物件的建構函式時從外面將不同的資料傳遞給建構函式,以實現初始化 3 複製建構函式 建...