【发布时间】:2013-07-15 16:01:44
【问题描述】:
我一直在学习 C++,并且遇到过静态变量(我有 C89 的先验知识),并且在我使用的资源中,他们在类中声明了一个静态变量,例如:
class nameHere
{
public:
static int totalNum;
}
int nameHere::totalNum = 0;
int main()
{}
例如。 我不明白的是,既然我已经在类定义中声明了静态变量是一个整数,为什么我还需要在类定义之外将它声明为一个整数? 像这样简单地初始化它是不是没有意义:
nameHere::totalNum = 0;
int main()
{}
是否有特殊原因或仅仅是 C++ 的约定? 感谢大家的帮助!
【问题讨论】:
-
可能与我们不能说
SomeClass::someMemberFunction {...}来定义成员函数的原因相同。 -
想一想,它会稍微简化语法并防止那些因拼写错误或缺少说明符而引起的讨厌的错误,但至少在函数的情况下,它可能很有用将
const放在定义中的值参数上,而不是声明上,尽管如果这种语法是一个选项,我可以习惯使用后者。 -
这会使语法更加复杂。已经存在声明/表达歧义,这会更进一步。
-
哦,你必须考虑函数的重载。对于非重载函数,我不明白为什么它不能工作,但是重载会使它变得更复杂。谁知道呢,也许这就是函数没有得到处理的原因,变量也随之而来。我想这总是可能。
标签: c++ variables syntax static