【发布时间】:2009-08-06 20:07:38
【问题描述】:
在 C++ 中,是否有任何理由不通过类实例访问静态成员变量?我知道 Java 对此不屑一顾,想知道它在 C++ 中是否重要。示例:
class Foo {
static const int ZERO = 0;
static const int ONE = 1;
...
};
void bar(const Foo& inst) {
// is this ok?
int val1 = inst.ZERO;
// or should I prefer:
int val2 = Foo::ZERO
...
};
我有一个额外的第二个问题。如果我声明一个静态双精度,我必须在某处定义它,并且该定义必须重复该类型。为什么必须重复类型? 例如:
In a header:
class Foo {
static const double d;
};
In a source file:
const double Foo::d = 42;
为什么我必须在我的 cpp 文件中重复“const double”部分?
【问题讨论】:
-
不是完全重复,但我认为可能适用相同的答案:stackoverflow.com/questions/840522/…
-
是的。阅读 Adam Rosenthal 的回答,了解为什么您应该更喜欢将类作为前缀而不是实例的充分理由。