3

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

来自“C++ 编程语言”

我有一堂课

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

而且我不需要像这样的定义:

const int Bingo::i89;

这被描述为必要的。因此,我显然不明白。你能解释一下那句话的意思吗?

4

2 回答 2

2

当您在类中定义一个成员时,它被称为In-class Initialization

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

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

因此引用,

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

于 2012-11-26T03:32:06.180 回答
0

据我记得,当静态变量在您的类中定义时,您需要 :: 来访问它

于 2012-11-26T03:04:49.737 回答