需要用到關鍵字operator
:
struct hour
public
static
hour
operator+(
hour lhs,
hour rhs)..
.;private
intvalue
;}
注意:
22.1.3 建立對稱操作符
22.2 理解復合操作符
struct hour..
.;}
注意區分字首版本和字尾版本。
前面的hour
是結構,如果是類的話遞增操作符的正確實現應該如下:
class
hour..
.;public
static
hour
operator++(
hour arg)..
.;private
intvalue
;}
有的操作符是需要成對使用的,如==
和!=
,>
和<
,<=
和>=
。所有操作符都要自己去適當的定義。
下面我們來建立乙個類來實現複數的計算。(.net framework中自帶了complex
型別,在system.numerics
中,所以真正要實現複數的話沒必要自己特意去定義。)
我們可以將complex
類自己定義如下:
complex.cs
using system;
using system.collections.generic;
using system.text;
namespace c_22_6
public
double imag
public
complex
(double r,
double i)
public
override
string
tostring()
+i)";}
public
static
complex
operator+(
complex l,
complex r)
public
static
complex
operator-(
complex l,
complex r)
public
static
complex
operator*(
complex l,
complex r)
public
static
complex
conj
(complex arg)
//共軛
public
static
complex
operator/(
complex l,
int r)
public
static
double
abs2
(complex arg)
public
static
complex
operator/(
complex l,
complex r)
}}
在program.cs
中驗證我們建立的這個類:
using system;
namespace c_22_6")
; console.
writeline
($"second is ");
console.
writeline
($"add: result is ");
console.
writeline
($"substract: result is ");
console.
writeline
($"multiply: result is ");
console.
writeline
($"divide: result is ");
}static
void
main
(string
args)
}}
執行結果:
first is(10
+4i)
second is(5
+2i)
add: result is(15
+6i)
substract: result is(5
+2i)
multiply: result is(42
+40i)
divide: result is(2
+0i)
1\c_22_6.exe (程序 29004
)已退出,**為 0。
按任意鍵關閉此視窗.
..
操作符過載
ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...
操作符過載
1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...
過載操作符
1.過載操作符1.1 限制過載操作符具有以下限制 1 只有c 預定義的操作符集中的操作符才可以被過載 2 對於內建型別的操作符,它的預定義不能被改變,應不能為內建型別過載操作符,如,不能改變int型的操作符 的含義 3 也不能為內建的資料型別定義其它的操作符 4 只能過載類型別或列舉型別的操作符 5...