根据 google c++ 样式指南,常量类成员字段的正确情况是什么?

问题描述

所以...我认为这留下了一些解释的空间,我想知道是否有人知道标准的精神是什么...

class A {
  const int size_;
public:
  A(int size) : size_(size) {}
};
  1. 尾随下划线是“私有”还是“阶级”的标志?
  2. const 字段应该是“kSize”还是“size_”?
  3. 如果改为公开,应该是“大小”吗?

解决方法

在您的示例中:

class A {
    const int size_;

就样式指南而言,此成员变量不是“常量”。它的值在构建后无法更改,但每个实例都不同。类中的“常量”将是 constexprstatic constenum。就目前而言,它不是常量,因此没有 k 前缀。

单独回答您的具体问题:

  1. 尾随下划线表明它是一个类成员变量。
  2. size_ 因为它不是风格指南中的“常量”。
  3. 将其公开会违反样式指南,因此这并没有真正的答案。

最后,请注意 const 成员变量禁止编译器生成的赋值运算符,这是您不经常看到它们的原因之一。