Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 静力学需要一个类吗?_C++_Static - Fatal编程技术网

C++ 静力学需要一个类吗?

C++ 静力学需要一个类吗?,c++,static,C++,Static,事实上直到现在我才试过。 有没有可能在没有类的情况下只在命名空间范围中使用静态? 为什么不呢 附录D(兼容性特征)[C++03] D2:在命名空间范围中声明对象时,不推荐使用static关键字 静态命名空间范围内的变量(全局或其他)具有内部链接。也就是说,它不能从其他翻译单位访问。它位于声明它的翻译单元的内部 更新 当您将变量声明为static时,这意味着其范围仅限于给定的转换单元。没有静态,范围是全局的 当您在.h文件(在名称空间内或不在名称空间内;无所谓)中将变量声明为static,并将该头

事实上直到现在我才试过。 有没有可能在没有类的情况下只在命名空间范围中使用静态? 为什么不呢

附录D(兼容性特征)[C++03]

D2:在命名空间范围中声明对象时,不推荐使用static关键字

静态
命名空间范围内的变量(全局或其他)具有内部链接。也就是说,它不能从其他翻译单位访问。它位于声明它的翻译单元的内部

更新
当您将变量声明为
static
时,这意味着其范围仅限于给定的转换单元。没有静态,范围是全局的

当您在.h文件(在名称空间内或不在名称空间内;无所谓)中将变量声明为
static
,并将该头文件包含在各种.cpp文件中时,静态变量的作用域将变为每个.cpp文件的局部作用域。 所以现在,每个包含该头文件的.cpp文件都将有它自己的变量副本


如果没有
static
关键字,编译器将只生成该变量的一个副本,因此只要您将头文件包含在多个.cpp文件中,链接器就会抱怨多个定义。

“正如其他人在帖子中提到的”。。。什么帖子?这种反对在C++11中被撤销<名称空间作用域上的code>static不再被弃用。嗯,我明白了,我的名称空间中只有静态常量数据变量,并且希望也有这个非常量静态变量,我是否应该将名称空间更改为类?如果另一个问题足够相似,您可以逐字复制其中一个答案,你可能应该把这个问题标记为重复的问题。至少,你需要给出归属@是的,在这种情况下使用extern可能会对你有所帮助。我是可能的,但可能不是你所想的——我认为它有静态的另一种含义;-)。
namespace MyNamespace
{
  static int a;
}

assign something, somewhere else....