我一直在学习C++,遇到过静态变量(我对C89有先验知识),在我使用的资源中,他们在诸如以下的类中声明了一个静态变量:

class nameHere
{
    public:
        static int totalNum;
}

int nameHere::totalNum = 0;

int main()
{}

例如。
我不明白的是,由于我已经在类定义中声明了静态变量为整数,为什么还要在类定义之外将其声明为整数?
像这样简单地初始化它没有意义:
nameHere::totalNum = 0;

int main()
{}

是否有特定原因或仅仅是C++的约定?
感谢您的所有帮助!

最佳答案

这(可能)使该语言的解析更加困难(无论如何,它几乎已经疯狂地解析了)。

实际上,数据类型(intlongmy_class等等)告诉编译器所看到的是声明的开始(在这种情况下,它也是一个定义)。否则,编译器将很难解决问题。

在全局范围内的特定情况下,这并没有那么糟,因为在全局范围内,您可以拥有的只是一系列声明。但是,在任何其他范围内,事情都会变得更加困难(在全局范围内制定一项规则,而在其他范围内制定另一条规则的确确实是丑陋的)。

07-24 09:38
查看更多