在C++包含很多運(yùn)算符,但以下幾個(gè)運(yùn)算符不能由用戶定義:
::(作用域解析;)
,(成員選擇)
.* (通過(guò)到成員的指針做成員選擇)
?:三元條件運(yùn)算符
sizeof和typeid
運(yùn)算符函數(shù)的名字是由關(guān)鍵字operator后跟對(duì)應(yīng)的運(yùn)算符構(gòu)成的;例如operator<<。運(yùn)算符函數(shù)的定義和使用都可以像其他函數(shù)一樣。使用運(yùn)算符不過(guò)是顯示調(diào)用運(yùn)算符函數(shù)的一種簡(jiǎn)寫(xiě)形式。例如
void f(complex a,complex b)


{
complex c=a+b; //簡(jiǎn)寫(xiě)
complex d=a.operator+(b);//顯示調(diào)用
}
一個(gè)運(yùn)算符函數(shù)必須或者是一個(gè)成員函數(shù),或者至少有一個(gè)用戶定義類型的參數(shù)(重新定義運(yùn)算符new和delete的函數(shù)則沒(méi)有此項(xiàng)要求)。這一規(guī)則就保證了用戶不能改變?cè)斜磉_(dá)式的意義,除非表達(dá)式中包含有用戶定義類型的對(duì)象。特別的,不能定義只對(duì)指針進(jìn)行操作的運(yùn)算符函數(shù)。
忠告:
1.定義運(yùn)算符主要是為了模仿習(xí)慣使用方式
2.對(duì)于大型運(yùn)算對(duì)象,請(qǐng)使用const引用參數(shù)類型
3.對(duì)于需要訪問(wèn)表示的操作,優(yōu)先考慮作為成員函數(shù)而不是作為非成員函數(shù)
4.對(duì)于對(duì)稱的運(yùn)算符采用非成員函數(shù)
5.將只有一個(gè)“大小參數(shù)”的構(gòu)造函數(shù)做成explicit
運(yùn)算符重載的內(nèi)容應(yīng)該還是挺多的,但卻不知道如何寫(xiě),看來(lái)還是文筆太差了,有機(jī)會(huì)再補(bǔ)上吧。