C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 雙目算術運算符 | + (加),-(減),*(乘),/(除),% (取模) |
| 關系運算符 | ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于) |
- 通常情況下,算術和關系運算符應該定義為非成員函數,以便兩側的運算對象進行轉換。
- 由于這些運算符一般不會改變運算對象的狀態,所以形參都是常量引用。
- 如果類同時定義了算數運算符和相關的復合賦值運算符,則通常情況下應該使用復合賦值來實現算數運算符。
1. 算術運算符
通常會計算它的兩個運算對象并得到一個新值,這個值通常存儲在一個局部變量內,操作完成后返回該局部變量的副本作為結果(返回類型建議設置為原對象的const類型)。
Sales_data operator +(const Sales_data &lhs,const Sales_data &rhs) {Sales_data sum = lhs;sum += rhs;return sum; }2. 相等運算符(Equality Operators)
設計準則:
- 如果類在邏輯上有相等性的含義,則應該定義operator==而非一個普通的命名函數。這樣做便于使用標準庫容器和算法,也更容易記憶。
- 通常情況下,operator==應該具有傳遞性。
- 如果類定義了operator==,則也應該定義operator!=。
- operator==和operator!=中的一個應該把具體工作委托給另一個。
3. 賦值運算符
- 不論形參的類型是什么,賦值運算符運算符都必須定義為成員函數,復合賦值運算符也通常如此。
- 兩類運算符都應該返回左側運算對象的引用(賦值運算符和復合賦值運算符)。
- 可以使用別的類型作為右側運算對象
4. 關系運算符(Relational Operators)
定義順序關系。 eg. 關聯容器中用到的小于運算符
- 如果某個類在邏輯上有相等性的含義,則該類應該定義operator==。
- 定義了相等運算符的類通常也會定義關系運算符。
- 如果類定義了operator==,則關系運算符的定義應該與operator==保持一致。特別是,如果兩個對象是不相等的,那么其中一個對象應該小于另一個對象。
- 如果存在唯一一種可靠的<定義,則應該考慮為這個類定義<運算符。如果類同時還包含==,則當且僅當<的定義和==產生的結果一致時才定義<運算符。
總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha