運算符重載的實質
運算符重載其實是特殊形式的函數重載。在C++編譯系統中,運算符的功能都是通過調用相應的函數實現的。這類函數被稱爲運算符函數,由關鍵字operator和對應的運算符組成函數名。運算符的操作數即爲函數的形參。例如,兩個int型數據相加,5+2;
在編譯時解釋爲operator+(5,2);
。因此運算符重載,實質上就是運算函數函數的重載。值得注意的是,C++中不允許對”.”,”::”,”*”,”?:”四種運算符進行重載。前三種運算符重載容易出現不必要的麻煩,而條件運算符則不值得重載。
此外,=、()、[ ] 、-> 四種運算符只能用類運算符來重載。
典型運算符重載舉例
插入符<<重載
插入符函數:
ostream &operator <<(ostream &output,類名 & 對象名)
{...//函數代碼
return output;}
操作數說明: output是ostream類的對象的引用,即cout的別名
提取符重載同理,
istream &operator >>(istream&input,類名 &對象名)
{ ...//函數代碼
return input;}
爲了區別 前綴運算符和後綴運算符++,- -,規定後綴運算符有一個int形參,不用給出參數名,僅僅作爲區別標記。