C++運算符重載遵循規則

運算符重載規則
1》 只能重載C++語言中原已經定義的大部分的運算符,但不能重載下列幾個運算符:
. (成員訪問運算符)
* (成員指針運算符)
:: (作用域運算符)
?: (條件運算符)
sizeof (長度計算運算符)
() (類型強者轉換)
2》重載不能改變運算符的操作個數,原有優先級,結合特性和操作方式;重載後運算符的含義必須清楚,直觀,特別是不能使程序閱讀者在理解程序時產生二義性。
3》下列四個運算符這能用成員函數重載,不能用友元函數重載。
= -> () []
4》下列兩個運算符只能用友元函數重載,不能用成員函數重載;
>> << (重載流運算符)
5》 如果單目運算符的操作數,或雙目運算符的左操作數,有可能是預定類型的數據,則必須能夠隱式地將該操作數類型轉換爲類對象。在此情況下,該運算符必須用友元函數重載,而不能用成員函數重載。
注意:使用運算符時不能違反原來的語句法則。比如,不能將模運算符(%)重載成使用一個操作數
int x;
Time hours;
% x;
% hour;
以上是錯誤的用法
不能創建新運算符 eg:不能定義operator
()函數來表示求冪。**

class compiex{
	private:
		double a,b;
	public:
		complex(double r=0.0, double i=0.0)
		{
			a=r;
			b=i;
		}
		friend complex operator +(complex c1,complex c2);
		friend complex operator -(complex c1,complex c2);
		void output();
	};
		
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章