將乙個沒有賦值含義的字元進行重新修改 例如:==
簡單的來說,運算子過載就是將對應的符號賦予新的意思,能夠更加容易處理比較複雜的形式,例如對兩個日期的比較,不只是單純的數字之間的比較,我們就需要寫一系列的**,來將等於號重新賦予新的意思即可.
操作:返回值型別 operator操作符(引數列表)
1.用於內建型別的操作符,其含義不能發生改變
2.作為類成員函式,我們要比實際要寫的引數少乙個,因為在成員函式中,每乙個函式內部都隱含有乙個this指標,所以我們在建立時,需要少寫乙個,並且this指標的所在,是成員函式的第乙個變數.
3…* 、:: 、sizeof 、?: 、. 注意以上5個運算子不能過載。這個經常在筆試選擇題**現。
class
date
bool isequal
(const date& d)
date
(const date& d)
//成員函式都有隱藏的this指標
//作為成員函式,必須比實際的少乙個
//這裡出現的this 指標時鐘指向從左往右的的第乙個指標
bool operator==
(const date& d)
//如果需要進行連續賦值,則返回值型別不能為空
//返回值型別為當前型別
date& operator=
(const date& d)
return
*this
;//返回當前被處理好的物件的對應指標,再處理下一位變數
//return d;}~
date()
private
: int _y;
int _m;
int _d;
};
上面的是乙個類:
很清晰的我們可以看出內部有6個成員函式和三個成員變數,**有點長,但是是很容易理解的,加油!!
下面的是運算子過載的具體操作:
void
test1()
//====呼叫運算子過載的完整形式
//if (d1.operator==(d2))
//如果運算子過載函式不是成員內部的函式
//if (operator==(d1,d2))
//一般用這裡的簡寫形式,比較方便,看起來簡潔明瞭
if(d1==d2)
else
//if (d1.isequal(d2))
}
將乙個有賦值含義的字元進行修改 例如: =
1.引數型別
2.返回值
3.檢測是否給自己進行賦值
4.返回*this
6.乙個類如果沒有顯式定義賦值運算子過載,編譯器也會生成乙個,完成物件按位元組序的值拷貝。
void
test()
對於賦值運算子就講解到這裡,主要就是理解運算子和賦值運算子的區別,主要不難,詳細理解就可以了.多敲**!!!加油!!! 運算子過載 類的賦值運算子過載
下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...
C 類與物件 運算子過載
在某些特殊的運算情況下,以正常的運算方法不匹配時,就可以使用運算子過載 注意 當過載運算子一樣的時候,類內作為友元的只放乙個就可以了 標頭檔案 include class computer 實現cpp檔案 include computer.h include computer computer in...
C 運算子過載賦值運算子
自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...