萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> Html5 >> C++中運算符的重載

C++中運算符的重載

下面是C++中運算符的重載

事實上,C++語言中的每一個運算符對應著一個運算符函數,在實現過 程中,把指定的運算表達式中的運算符轉化為對運算符函數的調用,而表達式中的運算對象轉化為運算符 函數的實參,這個過程是在編譯階段完成的。

例如: int a=1,b=2; a+b; 表達式“a+b”在編譯前,將被解釋為函數調用形式:operator+(a,b)。 其中,operator是一個關鍵字,它與後面的“+”共同組成了該運算符函數的函數名。 運算符重載是一種特殊的函數重載。在類中可以采用下述兩種方法對運算符函數進行重載。

1.重載為類的成員函數 將運算符函數重載為類的成員函數是指在類中定義一個同名的運算符函數,其語句格式為: TYPE X::operator@(形參表) { //函數體 //重新定義運算符@在指定類X中的功能 } 其中,operator是關鍵字,@是需要被重載的運算符,X是需要重載該運算符的類名,TYPE是該運算符 函數的返回值類型。關鍵字operator與後面的運算符@共同組成了該運算符函數的函數名。

2.重載為類的友元函數 可以定義一個與某一運算符函數同名的全局函數,然後再將該全局函數聲明為類的友元函數,從而實 現運算符的重載。其語法格式為: friend TYPE operator@(形參表); 下面介紹運算符重載的幾個問題: l 以上兩種重載形式均可訪問類的私有成員; l 幾乎所有的運算符都可以被重載,但下列運算符不允許重載: “。”、“。*”、“::”、“?:” l 運算符重載後,既不會改變原運算符的優先級和結合特性也不會改變使用運算符的語法和參數個數 ; l “=”、“()”、“[]”和“->”等運算符不能 重載為友元函數; l 當運算符重載為類的成員函數時,函數的參數個數比原來的運算對象少一個(右++和右 ——除外);當重載為類的友元函數時,參數個數與原運算符的運算個數相同;單目運算符最 好重載為類的成員函數,而雙目運算符則最好重載為類的友元函數。

以上就是我們給大家介紹的C++中運算符的重載,希望大家繼續關注本網站。

copyright © 萬盛學電腦網 all rights reserved