C 中奇妙的操作符過載

2022-02-01 12:40:48 字數 1348 閱讀 7938

細心的朋友可能發現,c#雖然可以過載操作符,但和c++比較起來,卻有很大的不同。定義的時候過載操作符方法必須是static,而且至少有乙個引數(一目和二目分別是乙個和兩個),c#和c++比起來,最重要的特徵是:<、>;==、!=;true、false必須成對出現,即過載了「<」就必須過載「>」,過載了「==」就必須過載「!=」,過載了「true」就必須過載「false」;另外,還必須實現基類object的兩個虛方法:gethashcode()和equals(object obj)。

以下是程式**,有些地方寫得不完善,只能說僅僅說明了問題,不對之處請指教:

usingsystem;

usingsystem.xml;

public namer(string fn,string ln)

private void init(string fn,string ln)

//////過載運算子true

//////

///如果姓名中姓或名有乙個為空,就返回假

public static bool operator true(namer n)

//////過載運算子false

//////

///public static bool operator false(namer n)

//////過載運算子==

//////

//////

public static bool operator ==(namer n1,namer n2)

//////過載運算子!=

//////

//////

public static bool operator !=(namer n1,namer n2)

//////過載運算子》

//////

//////

public static bool operator >(namer n1,namer n2)

//////過載運算子<

///

//////

///public static bool operator <(namer n1,namer n2)

//////重寫方法,必須有,後面的111是亂加的,你也可以寫其它的

//////

public override int gethashcode()

//////重寫方法,必須有

//////

///public override bool equals(object obj)

//////重寫方法,必須有

//////

public override string tostring()

public static void main()}}

c 中 操作符過載

操作符過載 1.有先後順序,如 t3 t1 t2 則t1 t2等價於t1.operate t2 2.對 操作符進行過載時,如aa是有本質區別的。操作符過載就是用函式的方法對乙個操作符進行重新定義,在該函式中定義了操作符所要完成的功能。其中cout是輸出流ostream中的物件 元素 3.a cout...

C 中 操作符過載

在實際程式中遇到一操作符問題,記錄下來方便以後查詢。在寫hashtable資料結構中,遇到操作符過載問題,具體需求如下 1.a x b 如果a x 為空,則新增記錄 2.b a x 如果a x 為空,則提示出錯 對操作符過載之後發現根本不能解決問題,查詢一些資料後發現該問題為過載後的讀寫問題,乙個過...

c 中過載《操作符

在類定義中,有時候我們需要直接利用cout來列印出類中的資料,此刻就需要過載 操作符來實現 假定定義了乙個類time 然後宣告了乙個類 time a cout 這樣的語法肯定是會報錯的,此刻就需要過載operator 要怎麼做呢?首先,在過載函式中,要訪問到類time中的私有成員的資料,所以我們需要...