C 複製建構函式和賦值符的區別

2021-08-10 05:17:47 字數 1349 閱讀 3172

#include "stdafx.h"

#include

#include

using namespace std;

//  copy constructor

//using namespace std;

// assign sign

class myclass ;

myclass::myclass()

myclass::myclass(const myclass &a)

myclass & myclass::operator=(const myclass &a)

myclass::~myclass()

int _tmain(int argc, _tchar* argv)

constructor of myclass

copy constructor of myclass

copy constructor of myclass

assign function of myclass

一切都是很顯然的了。

複製建構函式與賦值操作符之間的區別

複製建構函式又稱拷貝建構函式,它與賦值操作符間的區別體現在以下幾個方面

1.從概念上區分:

複製建構函式是建構函式,而賦值操作符屬於操作符過載範疇,它通常是類的成員函式

2.從原型上來區分:

複製建構函式原型classtype(const classtype &);無返回值

賦值操作符原型classtype& operator=(const classtype& );

返回值為classtype的引用,便於連續賦值操作

3.從使用的場合來區分:

複製建構函式用於產生物件,它用於以下幾個地方:函式引數為類的值型別時、函式返回值為類型別時以及初始化語句,例如(示例了初始化語句,函式引數與函式返回值為類的值型別時較簡單,這裡沒給出示例)

classtype a;         //

classtype b(a);     //呼叫複製建構函式

classtype c = a

;    //呼叫複製建構函式

而賦值操作符要求『=』的左右物件均已存在,它的作用就是把『=』右邊的物件的值賦給左邊的物件

classtype e;

class type f;

f = e;              //呼叫賦值操作符

4.當類中含有指標成員時,兩者的意義有很大區別

複製建構函式需為指標變數分配記憶體空間,並將實參的值拷貝到其中;而賦值操作符它實現的功能僅僅是將『=』號右邊的值拷貝至左值,在左邊物件記憶體不足時,先釋放然後再申請。當然賦值操作符必須檢測是否是自身賦值,若是則直接返回當前物件的引用而不進行賦值操作

C 複製建構函式和賦值符的區別

今天做c primer的習題,被複製建構函式和賦值符的區別弄暈了。簡單地說,有一道題目如下描述 class t1 class t2 t1 我先看見有乙個等號,以為就是賦值符來做的,其實並不是這樣的。做乙個實驗好了 class ctest ctest ctest cout constructor of...

C 複製建構函式和賦值符的區別

c 複製建構函式和賦值符的區別 拷貝建構函式和賦值符函式 以上這兩篇文章講的比較好,值得細細的去看。複製建構函式與賦值操作符之間的區別 複製建構函式又稱拷貝建構函式,它與賦值操作符間的區別體現在以下幾個方面 1 從概念上區分 複製建構函式是建構函式,而賦值操作符屬於操作符過載範疇,它通常是類的成員函...

C 複製建構函式和賦值符的區別

今天做c primer的習題,被複製建構函式和賦值符的區別弄暈了。簡單地說,有一道題目如下描述 class t1 class t2 t1 我先看見有乙個等號,以為就是賦值符來做的,其實並不是這樣的。做乙個實驗好了 class ctest ctest ctest ctest ctest const c...