C 賦值函式與拷貝建構函式

2021-05-21 22:09:53 字數 482 閱讀 1584

一看到「=」操作符,認為必然呼叫賦值函式,然而在下面的例子中,語句a b = c顯示的是呼叫拷貝建構函式。

結論:在看到「=」操作符為物件賦值的時候,如果是在物件的定義時候出現則呼叫拷貝建構函式,如果是不是,例子中的b=d,則為賦值函式。

#include

using namespace std;

class a

;a(const a &aa);

a& operator=(const a &aa);

void show();

private:

int data;

};a::a(const a &aa)

;a& a::operator=(const a &aa)

{cout << "assignment" 《執行結果

[root@localhost tmpc++]# ./s1

copy constructor

assignment

C 拷貝建構函式與賦值函式

c 拷貝建構函式與賦值函式 c 的拷貝函式和賦值函式既有聯絡又有區別,不細究的話很容易搞混,遂以小例示之如下,權作解惑之用 test.cpp include include include using namespace std class book book const book book boo...

C 拷貝建構函式與賦值函式

c 的拷貝函式和賦值函式既有聯絡又有區別,不細究的話很容易搞混,遂以小例示之如下,權作解惑之用 test.cpp include include include using namespace std class book book const book book book operator con...

C 拷貝建構函式與賦值函式

這裡我們用類string 來介紹這兩個函式 拷貝建構函式是一種特殊建構函式,具有單個形參,該形參 常用const修飾 是對該類型別的引用。當定義乙個新物件並用乙個同型別的物件對它進行初始化時,將顯式使用拷貝建構函式。為啥形參必須是對該型別的引用呢?試想一下,假如形參是該類的乙個例項,由於是傳值引數,...