運算子過載,簡直使c++變成了python,過載運算子後,物件可進行+-*/=等操作
系統自動實現的2個運算子過載:
= 和 &
class
類名
friend 返回值型別
operator
運算子(形參表)
/*簡單示例
*/int
operator +(int
b) friend
intoperator +(int b,類名 &物件引用)
//流插入和提取運算子,符號左側為cout或cin,成員函式無法滿足
friend ostream &operator
<< (ostream &output,類名&物件名)
friend istream &operator >> (istream &input,類名&物件名)
//過載強制型別轉換,無須指定返回型別
//double a=物件+6.0 允許
operator
double
()
/*過載自增
*/型別 & operator++();//
預設為前置符號++i
型別 & operator++(int);//
增加無用引數,可時實現i++
};//
類體外定義函式體
返回值型別 類名::operator+(形參表)
系統自動過載的=為淺拷貝,當類中有指標時,被重寫賦值物件的指標與舊物件指標一致對於此情況可改為深度拷貝:
1.構造和複製建構函式裡,為新物件的指標新申請空間並初始化
2.析構函式裡釋放指標記憶體空間
3.=函式裡,釋放當前物件的指標的舊空間,重新申請空間
classa a(
const a&tmp)
} ~a()
a &operator=(const a &tmp)
} ;
可過載運算子
運算子說明
+-*/%
雙目算術運算子
關係運算子
||,&&,!
邏輯運算子
+,-,*(指標),&(取址)
單目運算子
++,--
自增自減
|,&,~,^,<<,>>
位運算=,+=,-=......
賦值運算子
new,delete,new,delete
空間申請與釋放
()函式呼叫,->成員訪問,,逗號,下標
其他運算子
不可過載運算子
.成員訪問
.*,->*
成員指標
::域運算子
sizeof
長度運算
?:條件運算子
#預處理
C 基礎語法 特性(3) 物件導向之特殊成員
構造和析構呼叫順序為 基類 父類 建構函式 成員類構造 本類構造 基類構造與繼承順序有關 成員類構造與定義順序有關 本類析構 被包含類析構 基類析構函式 class 類名 類名 參數列 成員1 引數 指標成員2 new型別 型別轉換建構函式 類名 乙個形參 複製建構函式,有2種 一般使用const版...
c 物件導向特性之繼承(2)
繼承共分為三種 public 公有繼承 protected 保護繼承 private 私有繼承 於此同時,每個類中的成員也具有public,protected,private這三種特性,每種特性下的成員在每種繼承方式下都有不同的結果,總結如下 繼承方式 本來的屬性 轉換後的屬性 public pub...
C 的物件導向特性之封裝
在c 語言中,共有五種訪問修飾符 public private protected internal protected internal。public公有訪問。不受任何限制。private私有訪問。只限於本類成員訪問,子類,例項都不能訪問。protected保護訪問。只限於本類和子類訪問,例項不能...