C++ 運算符重載

——運算符重載將重載的概念擴展到運算符上,容許賦予C++運算符多種含義。C++容許將運算符擴展到用戶自定義的類型(如:類對象的相加)函數

使用運算符函數:

returntype operator op ( argument-list );
  • 例如classtype operator *(int a)、classtype operator +(classtype &ct)
  • op必須是有效的C++運算符
  • 不要返回指向局部變量或臨時對象的引用。函數執行完畢後,局部變量和臨時對象將消失,引用將指向不存在的數據

重載限制:

  1. 重載後的運算符必須至少有一個操做數是用戶定義的類型,這樣防止用戶爲標準類型重載運算符
  2. 使用運算符時不能違反運算符原來的句法規則(如一元運算符和二元運算符等的參數數目不能變,參數位置固定),不能修改運算符的優先級
  3. 不能建立新運算符、遵循「明智」的限制(如不把*重載成交換對象的數據成員)
  4. 不能重載如下運算符
    • sizeof
    • .
    • . *
    • ::
    • ?: 
    • typeid
    • const_cast
    • dynamic_cast
    • reinterpret_cast
    • static_cast
  5. 大多數運算符均可以經過成員或非成員函數進行重載,但下面的運算符只能經過成員函數進行重載:
    • =    賦值運算符
    • ()    函數調用運算符
    • []    下標運算符
    • ->    經過指針訪問類成員的運算符
相關文章
相關標籤/搜索