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