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.

更新于:2020年6月19日

349 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.