當操作者的左側是不同的類時。運算子過載不可能是正確的類中。
iostreamoperatoroverloading.cpp
/*** 書本:【thinkinginc++】
* 功能:非成員運算子*/
//當運算子的左側是不同的類的時候,就不能吧運算子過載到類裡面了。
#include"../require.h"
#include#include#includeusingnamespace std;
classintarray
; int i[sz];
public:
//吧陣列i初始化,吧陣列裡面sz*sizeof(*i)個數初始化為0
intarray()
//過載操作符
//這個左側引數是這個類,也就是intarray[x]代表者i[x];
int& operator (int x)
//兩個友元函式
friend ostream& operator <<(ostream& os, const intarray& ia);
friend istream& operator >>(istream& is, intarray& ia);};
ostream&operator << (ostream& os, const intarray& ia)
int main()
{ stringstream input("47 34 56 92103"); //吧字元流和這個string繫結
intarray i;
input>>i; //吧繫結的字串輸入到i中。每次以空格隔開
i[4]=-1;
cout<
關於非成員運算子和成員運算子的區別
運算子的過載一般我們會使用以下兩種形式 成員函式 非成員函式 其實這兩種定義不僅在語法上,在語義上也是有差別的。語法上,定義為成員函式,比如 operator 只接受乙個引數,而非成員函式接受2個引數語義上,這涉及到臨時物件無法繫結到左值引用的問題,比如我們過載operator operator s...
C 非成員函式實現運算子 過載
非成員函式實現運算子過載可以實現運算子前後都可以隱式轉換成所需的型別進行計算,如 fraction d a 2 根據a的型別,將2隱式轉換為fraction型別 fraction e 2 a 當類具有獲取參與運算子過載運算的必要私有資料介面時,使用非友元非成員函式。include using nam...
過載運算子作為成員函式還是非成員函式
一 定義為成員函式的運算子 1.賦值 呼叫 下標 成員訪問箭頭運算子 2.改變物件狀態的運算子或者與給定型別密切相關的運算子 遞增 遞減 解引用 3.復合賦值運算子 注 它也可以定義為非成員函式 二 定義為非成員函式的運算子 1.具有對稱性的,即能轉換任意一端的運算物件的運算子 算術 相等性 關係 ...