(1)測試一下自己,能區分麼?
string a("zhangbufeng");
string b("cuixiaoyuan");
string c(a);//物件建立時,使用拷貝建構函式
c=b; //c已經被初始化,從而呼叫了賦值函式。上次多寫了個string,造成了重定義。
(2) code 驗證
#include
#include
using namespace std;
class string
;string::~string(void)
string::string(const char *str)
else
} string::string(const string &other)
string & string::operator =(const string &other)
void main()
拷貝建構函式與賦值建構函式
include stdafx.h include include using namespace std class a a a a 過載拷貝函式 a int id,char t name a char name a operator a a 注意 此處一定要返回物件的引用,否則返回後其值立即消失!...
拷貝建構函式與賦值建構函式
什麼時候用拷貝建構函式,和賦值建構函式 一 當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 乙個物件以值傳遞的方式從函式返回 乙...
拷貝建構函式與賦值函式
為了便於說明我們以string類為例 首先定義string類,而並不實現其成員函式。class string 位拷貝拷貝的是位址,而值拷貝則拷貝的是內容。如果定義兩個string物件a和b。a.m data和b.m data分別指向一段區域,a.m data windows b.m data lin...