1、C++中重載賦值操作函數(shù)應(yīng)該返回什么?
淳安網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
11選5平臺修復(fù)(企 娥:217 1793 408)類重載賦值操作符一般都是作為成員函數(shù)而存在的,那函數(shù)應(yīng)該返回什么類型呢?參考內(nèi)置類型的賦值操作,例如
int x,y,z;
x=y=z=15;
賦值行為相當(dāng)于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)該想到的是怎么處理自我賦值,當(dā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ù)如下所示