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修飾 是對該類型別的引用。當定義乙個新物件並用乙個同型別的物件對它進行初始化時,將顯式使用拷貝建構函式。為啥形參必須是對該型別的引用呢?試想一下,假如形參是該類的乙個例項,由於是傳值引數,...