C++中Classes的静态变量初始化,为什么包括数据类型?

Cai*_*tri 11 c++ variables syntax static

我一直在学习C++,而且我遇到过静态变量(我从C89获得了先验知识),在我正在使用的资源中,他们在类中声明了一个静态变量,例如:

class nameHere
{
    public:
        static int totalNum;
}

int nameHere::totalNum = 0;

int main()
{}
Run Code Online (Sandbox Code Playgroud)

例如.我不明白的是,因为我已经声明静态变量是类定义中的整数,为什么我还需要将它声明为类定义之外的整数?简单地初始化就没有意义了:

nameHere::totalNum = 0;

int main()
{}
Run Code Online (Sandbox Code Playgroud)

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

Jer*_*fin 7

这可能(可能)使语言更难以解析(并且无论如何已经几乎难以解析).

正因为如此,数据类型(int,long,my_class,等等)告诉编译器什么它看到的是一个声明(在这种情况下,也有定义)的开始.如果没有这个,编译器就会有更困难的时间来解决问题.

在全球范围内的特定情况下,它不会那么糟糕,因为在全球范围内,您可以拥有的是一系列声明.然而,在任何其他范围内,事情会更加困难(并且在全球范围内有一条规则,而另一条规则确实是丑陋的).