类定义中的静态const int&初始化

时间:2012-11-26 02:59:17

标签: c++ static initialization const definition

  

如果(且仅当)您以需要的方式使用初始化成员   它要作为一个对象存储在内存中,该成员必须(唯一的)   在某处定义。

     

来自“The C ++ Programming Language”

我有一个班级

class Bingo{
      std::string name;
    public:
      Bingo(){}
      int i;
      static const int i89=89;
};

我不需要像:

这样的定义
const int Bingo::i89;

根据需要进行描述。所以我显然不明白。你能解释一下这个引语的含义吗?

2 个答案:

答案 0 :(得分:2)

在类中定义成员时,它被称为类内初始化

请注意,编译器可以将此类成员视为编译时常量,因为它知道该值不会随时更改,因此它可以应用自己的优化魔法并简单地内联此类成员,即它们不会存储在内存中了。由于它们没有存储在存储器中,因此无法获取这些成员的地址。反之亦然。

以上是Bjarne的基本原理,即每个C ++对象都需要唯一的定义,因此每个对象都需要存储在内存中,以便它们可以具有唯一的地址并被唯一标识。

因此引用,

  

如果(并且仅当)使用初始化成员的方式要求将其作为对象存储在内存中,则必须在某处(唯一)定义成员。

答案 1 :(得分:0)

据我所知,你需要::在定义它的类中时访问静态变量

相关问题