為什麼不要過載 , 操作符

2021-09-12 01:29:45 字數 544 閱讀 4714

&&,|| 是一種邏輯運算子,它內建實現了短路原則,比如 condition1 && condition2,如果 condition1 不滿足,那麼 condition2 的值將不會得到計算,同理如果 condition1 || condition2,當 condition1 為真時,condition2 的值也不會得到計算。

為什麼不要過載邏輯與,邏輯或運算子?舉個例子如下:假設有乙個類 class test 已經過載了 && 操作符和 + 操作符

test t1 = 0;

test t2 = 1;

if(t1 && (t1 + t2))

cout << "ok" << endl;

本來 t1 為0,t1 + t2 不會得到運算,但是如果根據函式呼叫的方式:

t1.operator&&(t1.operator+(t2))

會先運算 t1.operator+(t2),沒有實現短路規則。

總結:雖然語法上實現邏輯與和邏輯或運算子是不會存在問題的,但是由於函式呼叫的特點它無法實現短路規則,因此不建議過載。

為什麼操作符

在這種情況下,很明顯,cmylist 2 3元2到3的值設定!為什麼操作符返回乙個引用 讓我們仔細看看如何cmylist 2 3評價。因為下標操作符比賦值操作符的優先順序更高,cmylist 2 首先評估。cmylist 2 呼叫操作符,我們把它定義為返回乙個參考cmylist m anlist 2...

操作符過載

ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...

操作符過載

1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...