C++ Primer 5th笔记(chap 14 重载运算和类型转换)重载运算概述
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 14 重载运算和类型转换)重载运算概述
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 定義
重載運(yùn)算是具有特殊名字的函數(shù),它們的名字由關(guān)鍵字operator和其后要定義的運(yùn)算符號(hào)組成。
2. 運(yùn)算符表
2.1 可重載運(yùn)算符
| 雙目算術(shù)運(yùn)算符 | + (加),-(減),*(乘),/(除),% (取模) |
| 關(guān)系運(yùn)算符 | ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于) |
| 邏輯運(yùn)算符 | //(邏輯或),&&(邏輯與),!(邏輯非) |
| 單目運(yùn)算符 | + (正),-(負(fù)),*(指針),&(取地址) |
| 自增自減運(yùn)算符 | ++(自增),–(自減) |
| 位運(yùn)算符 | / (按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移) |
| 賦值運(yùn)算符 | =, +=, -=, *=, /= , % = , &=, /(其實(shí)是豎著的)=, ^=, <<=, >>= |
| 空間申請與釋放 | new, delete, new[ ] , delete[] |
| 其他運(yùn)算符 | ()(函數(shù)調(diào)用),->(成員訪問),,(逗號(hào)), |
2.2 不可重載的運(yùn)算符列表
| . | 成員訪問運(yùn)算符 |
| ., -> | 成員指針訪問運(yùn)算符 |
| :: | 域運(yùn)算符 |
| sizeof | 長度運(yùn)算符 |
| ?: | 條件運(yùn)算符 |
| # | 預(yù)處理符號(hào) |
3. 重載運(yùn)算符的設(shè)計(jì)規(guī)則
規(guī)則1
- 不能改變內(nèi)置類型的運(yùn)算符的含義。
- 只能重載已有的運(yùn)算符,而不能發(fā)明新的運(yùn)算符號(hào)。
- 重載運(yùn)算符的優(yōu)先級和結(jié)合律跟對應(yīng)的內(nèi)置運(yùn)算符保持一致。
規(guī)則2
- 通常情況下,不應(yīng)該重載逗號(hào),、取地址&、邏輯與&&和邏輯或||運(yùn)算符。
- 如果類中含有算術(shù)運(yùn)算符或位運(yùn)算符,則最好也提供對應(yīng)的復(fù)合賦值運(yùn)算符。
- 如何有==,一般會(huì)有!=
- 如果有單序比較,則應(yīng)該有operator<,同時(shí)也應(yīng)該有> 和其他的。
- 邏輯運(yùn)算符返回bool,算術(shù)運(yùn)算符返回類類型,賦值運(yùn)算符和復(fù)合賦值運(yùn)算符返回左側(cè)運(yùn)算對象的一個(gè)引用
4. 重載運(yùn)算符的參數(shù)
參數(shù)表示運(yùn)算符的運(yùn)算對象,對于二元運(yùn)算符來說,左側(cè)運(yùn)算對象傳遞給第一個(gè)參數(shù),右側(cè)運(yùn)算對象傳遞給第二個(gè)參數(shù)。
eg.
data1 + data2 operator+(data1, data2); data1 += data2; // expression-based ''call'' data1.operator+=(data2); // equivalent call to a member operator function- 除了重載的函數(shù)調(diào)用運(yùn)算符operator()之外,其他重載運(yùn)算符不能含有默認(rèn)實(shí)參。
- 重載運(yùn)算符函數(shù)的參數(shù)數(shù)量和該運(yùn)算符作用的運(yùn)算對象數(shù)量一樣多。
- 成員運(yùn)算符函數(shù)的顯式參數(shù)數(shù)量比運(yùn)算對象的數(shù)量少一個(gè)。
5. 設(shè)計(jì)為成員函數(shù)還是普通函數(shù)
- 把運(yùn)算符定義為成員函數(shù)時(shí),它的左側(cè)運(yùn)算對象必須是運(yùn)算符所屬類型的對象。
- 如果一個(gè)運(yùn)算符函數(shù)是類的成員函數(shù),則它的第一個(gè)運(yùn)算對象會(huì)綁定到隱式的this指針上。
如何選擇將運(yùn)算符定義為成員函數(shù)還是普通函數(shù):
- 賦值=、下標(biāo)[]、調(diào)用()和成員訪問箭頭->運(yùn)算符必須是成員函數(shù)。
- 復(fù)合賦值運(yùn)算符一般是成員函數(shù),但并非必須。
- 改變對象狀態(tài)或者與給定類型密切相關(guān)的運(yùn)算符,如遞增、遞減、解引用運(yùn)算符,通常是成員函數(shù)。
- 具有對稱性的運(yùn)算符可能轉(zhuǎn)換任意一端的運(yùn)算對象,如算術(shù)、相等性、關(guān)系和位運(yùn)算符,通常是普通函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 14 重载运算和类型转换)重载运算概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha