C 賦值運算子過載

2021-09-26 02:34:20 字數 1101 閱讀 6140

c++為了增強**的可讀性引入了運算子過載,運算子過載是具有特殊函式名的函式,也具有其返回值類

型,函式名字以及引數列表,其返回值型別與引數列表與普通的函式類似。

函式名字為:關鍵字operator後面接需要過載的運算子符號。

用於內建型別的操作符,其含義不能改變,例如:內建的整型+,不 能改變其含義

注:.* 、:: 、sizeof 、?: 、. 注意以上5個運算子不能過載。這個經常在筆試選擇題**現。

函式原型:返回值型別 +operator+操作符+(引數列表)

例:

// 全域性的operator==

class date

//private:

int _year;

int _month;

int _day;

};// 這裡會發現運算子過載成全域性的就需要成員變數是共有的,那麼問題來了,封裝性如何保證?

// 這裡其實可以用我們後面學習的友元解決,或者乾脆過載成成員函式。

bool operator==(const date& d1, const date& d2)

void test ()

void printdate()

date& operator++()

private:

int _year;

int _month;

int _day;

};int main() 賦值運算子過載:

class date

date (const date& d)

date& operator=(const date& d)

}private:

int _year ;

int _month ;

int _day ;

};

date類運算子過載案例

//完善的date類

class date ;

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...

C 賦值運算子過載

c 賦值運算子過載,為什麼要返回引用?查了許多資料,基本有兩種說法 一 c c 賦值運算子的本意為 返回左值的引用 左值 賦值號左面的變數而非其值 可用以下程式段測試 int a,b 3,c 2 a b c cout 對於x y x,y均為物件時 若不返回左值的引用,將會生成臨時物件。如果不處理x ...

C 過載賦值運算子

c 類建立時,會產生乙個預設的賦值運算子函式 a operator const a 普通類例項之間賦值可能沒問題,但當類成員變數中有指標引用的動態記憶體時,複製後只是簡單地將指標值複製,而沒有將其指向的動態記憶體也拷貝乙份,這樣即多個類例項內的指標指向同一動態記憶體,當類例項析構時,會導致這塊動態記...