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

2021-05-25 09:03:03 字數 681 閱讀 6796

c++的拷貝函式和賦值函式既有聯絡又有區別,不細究的話很容易搞混,遂以小例示之如下,權作解惑之用

// test.cpp

#include

#include

#include

using namespace std;

class book

book(const book& book)

book& operator=(const book& rhs)

~book()

private:

book& swap(book& rhs)

public:

char* name;

char* author;

double price;

};int main()

編譯:g++ -o test test.cpp

執行結果:

the c++ standard library

nicolai m. josuttis

98the c++ standard library

nicolai m. josuttis

98the c++ standard library

nicolai m. josuttis

98感謝normandy的精彩寫作,讓我對 = 操作運算有了進一步的了解。

摘自:

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

一看到 操作符,認為必然呼叫賦值函式,然而在下面的例子中,語句a b c顯示的是呼叫拷貝建構函式。結論 在看到 操作符為物件賦值的時候,如果是在物件的定義時候出現則呼叫拷貝建構函式,如果是不是,例子中的b d,則為賦值函式。include using namespace std class a a ...

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

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

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

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