賦值運算子過載

2021-09-27 06:57:41 字數 1317 閱讀 3663

c++為了增強**的可讀性引入了運算子過載,運算子過載是具有特殊函式名的函式,也具有其返回值類 型,函式名字以及引數列表,其返回值型別與引數列表與普通的函式類似。

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

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

class date

date(const date& d)

date& operator=(const date& d) }

private:

int _year;

int _month;

int _day;

};

賦值運算子主要有四點

引數型別

返回值檢測是否給自己賦值

返回*this

乙個類如果沒有顯示定義賦值運算子的重在,編譯器也會生成乙個,完成物件按位元組序的值拷貝

1.const修飾類的成員函式

將const修飾的類成員函式稱之為const成員函式,const修飾類成員函式。實際修飾該成員函式隱含的this指標,表明在該成員函式中不能對類的任何成員進行修改。

讓我們看看下面的**:

class date

void display()const

private:

int _year;

int _month;

int _day;

};void test()

請思考下面幾個問題(面試題)

const物件可以呼叫非const成員函式嗎?

不可以

非const物件可以呼叫const成員函式嗎?

可以

const成員函式可以呼叫其他非const成員函式嗎?

不可以

非const成員函式可以呼叫其他const成員函式嗎?

可以

這兩個預設成員函式一般不用重新定義 ,編譯器缺省會生成。

這兩個運算子一般不需要過載,使用編譯器生成的預設取位址的過載即可,只有特殊情況,才需要過載,比如想讓別人獲取到指定的內容!

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

過載賦值運算子

1 注意過載賦值運算子和,運算子必須定義為類的成員函式。2 注意 如果程式不提供顯示的賦值運算子則系統會提供乙個預設的賦值運算子。3 什麼時候過載賦值運算子 當類中含有指標成員時,一般都要重定義類的賦值運算子。4 過載賦值運算子時應有處理語句m m的情況。其中m是某乙個類的物件。如果不處理這樣的語句...

賦值運算子過載

在下面類中實現 class cmystring 為了寫出乙個完整的賦值運算子過載函式,我們要考慮以下幾個問題 一步步解決上述的問題,我們可以編寫出經典的演算法 cmystring cmystring operator const cmystring str return this 考慮到異常安全性的...