當乙個過載操作符是乙個名字空間的函式時,對於操作符的第乙個和第二個引數,即等於操作符的左和右兩個運算元,都會考慮轉換.
一般應該怎樣決定是把乙個操作符宣告為類成員還是名字空間成員呢?在某些情況下程式設計師沒有選擇的餘地:
1 如果乙個過載操作符是類成員,那麼只有當跟它一起被使用的左運算元是該類的物件時,它才會被呼叫.如果該操作符的左運算元必須是其他的型別,那麼過載操作符必須是名字空間成員.
2 c++要求賦值= 下標 呼叫() 和成員訪問箭頭-> 操作符必須被定義為類成員操作符.任何把這些操作符定義為名字空間成員的定義都會被標記為編譯時刻錯誤.
例如:// 錯誤: 必須是類成員
char& operator( string & ,int ix );
3 除此之外由類設計者選擇把操作符宣告為乙個類成員還是乙個名字空間成員.如果有乙個運算元是類型別,如string 類的情形,那麼對於對稱操作符,比如等於操作符最好定義為名字空間成員.
C 操作符過載
1.作為成員過載 class myclass public myclass operator const myclass d cons friend myclass operator const myclass a1,const myclass a2 關於返回值型別的討論 呼叫者堆疊裡返回乙個物件效...
C 過載操作符
過載操作符 一 過載操作符的定義 1.過載操作符的結構 返回型別 operator 需要過載的操作符 形參列表 注意 形引數目應和運算元數目相同。2.過載操作符的幾條注意事項 1 過載的操作符名不能通過連線其他合法符號來建立任何新的操作符。如 2 過載操作符必須具備至少乙個類型別或列舉型別的運算元。...
c 操作符過載
過載操作符 一 限制 1 不能增加新的操作符 2 有些操作符不能過載,如.物件中的訪問成員 作用域解析操作符 sizeof 三元操作符 3 不能改變操作符的元數,元數是指與操作符相關的引數或運算元個數。比如一元操作符 只能應用於乙個操作符 4 不能改變操作符的優先順序 5 不能重新定義內建型別的操作...