C++中的大部分運算符都可以被重載,下面給出了能夠被重載和不能被重載的運算符。
可以被重載的運算符: + – * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >> >>= <<= == != <= >= && || ++ — ->* ‘ -> [] () new delete new[] delete[] 不可以被重載的運算符: . .* :: ?; sizeof重載不能改變運算符的優先級。
重載不能改變運算符的結合律。
重載不能改變運算符操作數的個數。
重載一元運算符仍然是一元運算符,重載二元運算符仍然是二元運算符,C++唯一的一個三元運算符(?;)不能被重載。&、*、+、-既可以被用作一元運算符,也可以被用作二元運算符。
不能創建新的運算符,只能重載現有的運算符。
常見編程錯誤:
1、 試圖創建新的運算符是個語法錯誤。
2、 試圖改變運算符對內部類型的對象的作用方式是個語法錯誤。
重載賦值運算符=和加法運算符+以後,下面的語句是允許的:
Object2 = Object2 + Object1;
但是並不意味著 += 也被自動重載了,因此下面的語句是不允許的:
Object2 += Object1;
3、 運算符只能被顯示重載。
例如,重載了某個運算符(如“+”)便可自動的重載相關的運算符(如“+=”)。這是不被允許的。
請關注 李木空間 www.limou.net