C++怎么將重載的運(yùn)算符定義在操作對(duì)象的命名空間內(nèi)

這篇文章主要講解了“C++怎么將重載的運(yùn)算符定義在操作對(duì)象的命名空間內(nèi)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++怎么將重載的運(yùn)算符定義在操作對(duì)象的命名空間內(nèi)”吧!

高安網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

C.168: 將重載的運(yùn)算符定義在操作對(duì)象的命名空間內(nèi)

Reason(原因)

可讀性。提供使用ADL發(fā)現(xiàn)操作符的能力。避免不同命名空間中的不一致。

Example(示例)

struct S { };
bool operator==(S, S);   // OK: in the same namespace as S, and even next to S
S s;

bool x = (s == s);

這正是默認(rèn)相等比較運(yùn)算符做的事情,如果存在這么一個(gè)默認(rèn)的話。

Example(示例)

namespace N {
   struct S { };
   bool operator==(S, S);   // OK: in the same namespace as S, and even next to S
}

N::S s;

bool x = (s == s);  // finds N::operator==() by ADL

Example, bad(反面示例)
struct S { };
S s;

namespace N {
   S::operator!(S a) { return true; }
   S not_s = !s;
}

namespace M {
   S::operator!(S a) { return false; }
   S not_s = !s;
}

代碼中N和M兩個(gè)命名空間中!s的含義不一樣。這會(huì)非?;靵y。如果去掉命名空間M的定義又會(huì)增加出錯(cuò)的可能。

Note(注意)

如果為不同命名空間內(nèi)的兩個(gè)不同的類型定義二目運(yùn)算符,你無(wú)法遵守本準(zhǔn)則。例如:

Vec::Vector operator*(const Vec::Vector&, const Mat::Matrix&);

這可能是最好狀態(tài)了。

See also(參照)

這可以說(shuō)是【幫助函數(shù)應(yīng)該和它幫助的類定義在一個(gè)命名空間內(nèi)】規(guī)則的特例。

Enforcement(實(shí)施建議)

  • 標(biāo)記沒有和操作對(duì)象定義在同一個(gè)命名空間中的運(yùn)算符。

感謝各位的閱讀,以上就是“C++怎么將重載的運(yùn)算符定義在操作對(duì)象的命名空間內(nèi)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++怎么將重載的運(yùn)算符定義在操作對(duì)象的命名空間內(nèi)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站欄目:C++怎么將重載的運(yùn)算符定義在操作對(duì)象的命名空間內(nèi)
本文鏈接:http://muchs.cn/article48/gdijhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、建站公司企業(yè)建站、靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)