通过这里的文件去http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2011/n3242.pdf初始化静态成员数组为零
“具有静态存储的持续时间(3.7.1)或线程存储 持续时间(3.7.2)的变量应零初始化(8.5)任何其他 初始化发生”
如果我拥有的一切之前,即类的声明和主()在一个单一的文件(必须的),我应该能够省略初始化。 但是,如果我省略,在构建过程中会出现“未定义引用”错误。
#include <iostream>
using namespace std;
class foo
{
public:
static int array[2];
};
int foo::array[2] = {0}; //I should be able to omit this line
int main()
{
cout << "foo::array[0] = " << foo::array[0] << endl;
return 0;
}
PS:没有C++ 11
对于初始化更正确的二维数组? 'int foo :: array [2] [2] = {{0}};'或'int foo :: array [2] [2] = {0};'或'int foo :: array [2] [ 2] = {};' – ontherocks
@ontherocks第一个是无效的AFAICT,后两个是相同的,所以与最后两个版本不是更“正确”的版本。 –