06 August 2022

C++ 核心指南目录

C.12: Don’t make data members const or references in a copyable or movable type

理由

这样做没啥用。导致该类型很难使用:不能复制,或因为种种原因,部分不能复制。

例子

class bad {
    const int i;    // bad
    string& s;      // bad
    // ...
};

const&的成员数据导致这个类只能部分复制,即可以复制构造,不能复制赋值。

注意

如果你需要让成员指向某些东西,不要用引用,可以用指针(原始指针;智能指针;如果不能为空,可以是gsl::not_null)。

强化

标记出有 const&&&修饰的成员数据。