1樓:藏鏡人閃閃啊
引用不能使用字面值,這是引用的需要注意的。
c++中?:運算子為什麼不能過載?
2樓:網友
c++標準規定:
並不是所有的操作符都能被過載。除了。 ,sizeof,typeid這幾個運算子不能被過載,其他運算子都能被過載。
過載不能改變該運算子用於內建型別時的函義,程式設計師不能改變運算子+用於兩個int型時的含義。
運算子函式的引數至少有乙個必須是類的物件或者類的物件的引用。這種規定可以防止程式設計師運用運算子改變內建型別的函義。
過載不能改變運算子的優先順序。
過載不能改變運算子的結合律。
過載不能改變運算子運算元的個數。比如+需要兩個運算元,則過載的+也必須要有兩個運算元。
可看到,c++之所以不允許過載?:運算子,是考慮到?:運算子的條件特性。
運算子的過載實質是函式的呼叫。
比如 a?b:c
假設過載函式原型 operator ?:a,b,c)
那麼,其跳轉性質就不復存在了。
舉例說明:int a=0,b=0;
bool p = true;
p? (a = 10): b = 10);
執行結果 a=10 b=0;
轉換為函式呼叫形式。
operator ?:p,a=10,b=10);
執行結果 a=10 b=10
顯然 函式呼叫不能解決流程式控制制的問題,所以為了避免程式理解上的偏差,c++標準規定?:不能過載。
過載運算子問題
3樓:網友
a1 沒有被重新賦值,保持不變。
首先建構函式不分是 a1 的還是 a2 的,a1 和 a2 都是變數,呼叫的都是 complex 的建構函式。
過載的建構函式 + 的意思是當乙個 complex 物件(這裡是 a1) +上另乙個 complex 物件 (這裡是a2) 時,將 a1 的成員與 a2 的成員分別相加,返回乙個新的 complex 物件。
因此 a3 是乙個新的 complex 物件,a1 與 a2 都沒有發生變化。
有關c 過載運算子的問題
第一行是引用,是傳地址呼叫函式,在呼叫函式時會減少複製物件的開銷。這時,形參就是實參的一個引用,對形參的修改會影響到實參。第二行的傳值呼叫,所謂的傳值呼叫是指把實參複製給形參,形參和實參是兩個獨立的個體,形參是實參在記憶體上的另一個拷貝,對形參的一切修改一般不會影響到實參。如,對於第二個宣告有以下函...
關於C 中過載自增運算子
這個呼叫的預設拷貝函式 this實際上就是呼叫成 copy員函式的物件地址。如 time1.display 若display 裡有用到this的話,this的值其實為 time1,所以 this time1.time time operator int 這個是後加加的函式原型,後 其實是先儲存值,在...
C中運算子,C中運算子叫什麼名字
樓上的都錯了,樓主說的是成員指標運算子.而不是 成員指標運算子在指標運算子的基礎上限定了變數的適用範圍是類或結構體的成員變數或成員函式指標 下面有段 就使用了成員指標運算子 include class claa double fx double x void main include int mai...