在头文件中全局声明 static int a = 1 是合法的,因为 static 关键字在这里表示 a 只能在当前文件中访问,它拥有文件作用域。这意味着 a 的作用范围仅限于当前文件,在其他文件中无法访问。

而在头文件的类的 private 部分声明 static int a = 1 是不合法的。在类的 private 部分声明的变量是私有的,只能在类的成员函数中访问。而 static 关键字表示变量是类的共享成员,它会被类的所有实例共享。这样的声明会导致在每个包含该头文件的源文件中都出现一个名为 a 的变量,这些变量在不同的源文件中是独立的,而且相互不可见。这违背了 static 的共享特性,因此不可以在头文件的类的 private 部分声明 static 变量。

为什么可以在头文件里面全局声明static int a = 1 但不可以在头文件的类的private里面声明

原文地址: https://www.cveoy.top/t/topic/iLNh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录