visual C (二十二)操作符過載

2021-10-06 03:39:03 字數 2687 閱讀 9205

需要用到關鍵字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...