一看到「=」操作符,認為必然呼叫賦值函式,然而在下面的例子中,語句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修飾 是對該類型別的引用。當定義乙個新物件並用乙個同型別的物件對它進行初始化時,將顯式使用拷貝建構函式。為啥形參必須是對該型別的引用呢?試想一下,假如形參是該類的乙個例項,由於是傳值引數,...