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

相关对象未被修改时应使用 const 声明

6.2.11 ID_nonConstUnmodified
目录 › next › previous

用 const 显式区分数据是只读的还是可写的,细化数据的访问方式可显著提高可读性,并保护数据不被错误修改,有助于编译器优化。

下列情况应使用 const 声明:

  • 不需要被修改的非参数对象应声明为常量对象
  • 通过指针或引用访问对象但不修改对象时,应声明为常量指针或引用
  • 成员函数访问非静态成员对象但不修改相关对象时,应声明为常量成员函数

示例:

double pi = 3.14;   // Non-compliant

class Circle {
    double r;

public:
    Circle(double);
    Circle(Circle&) = default;   // Non-compliant

    double area() {              // Non-compliant
        return pi * r * r;
    }
};

例中 pi 未被修改,应作为常量;拷贝构造函数的参数未被修改,应声明为常量引用;成员函数 area 未修改成员对象,应声明为常量成员函数:

const double pi = 3.14;   // Compliant

class Circle {
    ....
    Circle(const Circle&) = default;   // Compliant

    double area() const {              // Compliant
        return pi * r * r;
    }
};

相关

ID_constStrToNonConstPtr

参考

C++ Core Guidelines Con.1 C++ Core Guidelines Con.2 C++ Core Guidelines Con.3 C++ Core Guidelines Con.4 MISRA C++ 2008 7-1-1 MISRA C++ 2008 7-1-2
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.