C++ 运算符重载的基本规则和习惯用法是什么?
在 C++ 中进行运算符重载时,您应该遵循 3 个基本规则。像所有此类规则一样,也有一些例外。这三个规则是:
- 1. 当运算符的含义并非显而易见且没有争议时,不应进行重载。相反,应使用精心选择的名称提供一个函数。基本上,运算符重载的首要规则的核心是
- 不要这样做。
- 这可能看起来很奇怪,但只有在少数情况下运算符重载才是合适的。原因是,除非在应用领域中使用运算符是众所周知且没有争议的,否则很难理解运算符应用背后的语义。
- 2. 始终坚持运算符众所周知的语义。C++ 对重载运算符的语义没有限制。您的编译器可以愉快地接受实现二元 + 运算符从其右侧操作数进行计算的代码。但是,此类运算符的用户永远不会怀疑表达式 a + b 会将 a 从 b 中减去。
- 3. 始终提供一组相关操作中的所有操作。
- 运算符彼此相关,也与其他操作相关。如果您的类型支持 a + b,用户会期望也能调用 a += b。如果它支持前缀递增 ++a,他们会期望 a++ 也能工作。如果他们可以检查 a < b,他们肯定也期望能够检查 a > b。如果他们可以复制构造您的类型,他们会期望赋值也能工作。
- 在大多数情况下,您不需要运算符重载,并且只应在运算符定义明确且非常适合这种情况时才进行重载。这篇文章的灵感来自 https://stackoverflow.com/a/4421708/3719089.
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP