cppcoreguidelines-avoid-const-or-ref-data-members¶
此检查会警告那些可复制或可移动且具有 const 限定或引用(左值或右值)数据成员的结构体或类。拥有此类成员很少有用,并且会使类仅可复制构造但不可复制赋值。
示例
// Bad, const-qualified member
struct Const {
const int x;
}
// Good:
class Foo {
public:
int get() const { return x; }
private:
int x;
};
// Bad, lvalue reference member
struct Ref {
int& x;
};
// Good:
struct Foo {
int* x;
std::unique_ptr<int> x;
std::shared_ptr<int> x;
gsl::not_null<int*> x;
};
// Bad, rvalue reference member
struct RefRef {
int&& x;
};
此检查实现了 C++ 核心准则中的 C.12。
进一步阅读:数据成员:绝不为 const。