☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

重载运算符的返回类型应与内置运算符相符

6.8.2 ID_illOperatorRetType
目录 › next › previous

为了便于调用者使用,并满足泛型编程的要求,重载运算符的返回类型应与内置运算符相符:

  • 比较和逻辑运算符应返回 bool 型对象
  • 算术和位运算符应返回相关类的对象
  • 符号运算符 +、- 应返回相关类的对象
  • 后置 ++、-- 运算符应返回相关类的对象
  • 前置 ++、-- 运算符应返回相关类的引用
  • 下标运算符 [ ] 应返回相关类的引用
  • 赋值及复合赋值运算符应返回相关类的引用

示例:

struct A {
    int operator < (const A&);   // Non-compliant
};

例中重载的比较运算符返回 int 型对象,而内置比较运算符的结果为 bool 型,重载运算符的行为和内置运算符不一致会导致意料之外的错误,相关对象也可能无法被通用泛型算法接受。

应改为:

struct A {
    bool operator < (const A&);   // Compliant
};

相关

ID_nonStdAssignmentRetType
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.