我一直在学习C++,遇到过静态变量(我对C89有先验知识),在我使用的资源中,他们在诸如以下的类中声明了一个静态变量:
class nameHere
{
public:
static int totalNum;
}
int nameHere::totalNum = 0;
int main()
{}
例如。
我不明白的是,由于我已经在类定义中声明了静态变量为整数,为什么还要在类定义之外将其声明为整数?
像这样简单地初始化它没有意义:
nameHere::totalNum = 0;
int main()
{}
是否有特定原因或仅仅是C++的约定?
感谢您的所有帮助!
最佳答案
这(可能)使该语言的解析更加困难(无论如何,它几乎已经疯狂地解析了)。
实际上,数据类型(int
,long
,my_class
等等)告诉编译器所看到的是声明的开始(在这种情况下,它也是一个定义)。否则,编译器将很难解决问题。
在全局范围内的特定情况下,这并没有那么糟,因为在全局范围内,您可以拥有的只是一系列声明。但是,在任何其他范围内,事情都会变得更加困难(在全局范围内制定一项规则,而在其他范围内制定另一条规则的确确实是丑陋的)。