您好,登錄后才能下訂單哦!
1、C++中重載賦值操作函數(shù)應(yīng)該返回什么?
11選5平臺修復(fù)(企 娥:217 1793 408)類重載賦值操作符一般都是作為成員函數(shù)而存在的,那函數(shù)應(yīng)該返回什么類型呢?參考內(nèi)置類型的賦值操作,例如
int x,y,z;
x=y=z=15;
賦值行為相當于x=(y=(z=15)),也就是賦值操作應(yīng)該返回左操作數(shù)的引用,因此,為了和內(nèi)置類型兼容,類中重載賦值操作符應(yīng)該返回左操作數(shù)的引用,即*this,如下類A的重載賦值操作函數(shù)的聲明,
class A{};
A& A::operator=(const A&);
2、確保重載賦值操作具有良好的行為
對于賦值操作,首先應(yīng)該想到的是怎么處理自我賦值,當類包含指針類型的數(shù)據(jù)時尤為重要,如下所示
class MyString{
public:
...
MyString(char *p=NULL);
MyString& operator=(const MyString&);
private:
char *str;
};
MyString a("hello");
MyString b("world");
a=a;
我們知道,進行賦值時,首先要釋放左操作數(shù)的資源,然后再根據(jù)右操作數(shù)對左操作數(shù)進行賦值,賦值操作函數(shù)如下所示
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。