欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
為什么operator=操作符返回引用

為什么operator=操作符返回引用

趙湘寧

問(wèn)題:
       MSDN文檔中解釋到:operator=操作符缺省情況下返回引用――
TYPE& TYPE::operator=(const TYPE&)
為什么呢?我對此的理解是:“=”是個(gè)二進(jìn)制操作符。其傳入的參數是引用對象,而其它的參數是類(lèi)實(shí)例,“=”在這個(gè)類(lèi)實(shí)例中被重載。而我在實(shí)際應用中可以不用返回任何類(lèi)型(void)來(lái)實(shí)現賦值操作符,并仍然可以完成賦值操作。我這樣做正確嗎?如果不正確,那么為什么缺省的實(shí)現返回引用呢?
解答:
    如果你再花點(diǎn)時(shí)間想一想可能就會(huì )有答案。其實(shí)很簡(jiǎn)單。operator=返回引用的理由是使你能在一個(gè)語(yǔ)句中連接多個(gè)賦值。
TYPE a,b,c,d;

a = b = c = d;

編譯器是象這樣解釋前面一行的:

a = (b = (c = d));

在編譯過(guò)程中,賦值是右結合的。說(shuō)白了就是如果你想要玩一下多個(gè)賦值,operator=返回的東西必須是右(rhs)賦值。除了返回對對象自身的引用還能有什么呢?這就是為什么operator=最后一行總是返回對this的引用:
CMyClass& CMyClass::operator=(const CMyClass& rhs) {
...... 
// do the 
// assignment
return *this;
};

rhs參數被聲明為常量的話(huà),就允許常量對象的賦值。沒(méi)有理由不允許。為什么operator=要返回非常量引用呢?所以不管在哪里你都能使用賦值語(yǔ)句對TYPE進(jìn)行引用:
void MyFunc(TYPE& a);
...
TYPE a,b;
MyFunc(a=b); // 賦值以后傳遞

由于operator=返回非常量,你甚至可以使用圓括弧重載通常的等號結合率:
TYPE a,b,c;
(a = b) = c;

圖一是簡(jiǎn)單的示例。并有一個(gè)問(wèn)答題:當你完成并運行FOO時(shí),它的輸出是什么?
如果你想要學(xué)習更多的關(guān)于賦值操作的內容,我強烈推薦一本書(shū)《Effective C++》作者是Scott Meyers。本書(shū)由Addison Wesley Longman, 1997出版。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C++操作符重載(“=”)
子類(lèi)的拷貝構造函數和賦值操作符
關(guān)于初始化C++類(lèi)成員
操作符重載
More Effective C++ (M16 -to- M24) 效率
const使用詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久