如何在不使用初始化列表(我认为是c ++ 11特性)的情况下在c ++中初始化类中的数组?我的编译器(VS2013)完全不支持c ++ 11,遗憾的是。
答案 0 :(得分:1)
Visual Studio 2013支持Initializer lists
,这意味着您可以轻松完成:
--C++11: default initialization using {}
int n{}; --zero initialization: n is initialized to 0
int *p{}; --initialized to nullptr
double d{}; --initialized to 0.0
char s[12]{}; --all 12 chars are initialized to '\0'
string s{}; --same as: string s;
char *p=new char [5]{};
vector<int> vi {1,2,3,4,5,6};
vector<double> vd {0.5, 1.33, 2.66};
etc
或C ++ 11中支持的其他形式 如果你不喜欢它,你也可以使用旧的方法,如:
您可以按照以下步骤操作:
int bar [5] = { 10, 20, 30 };
这会创建一个这样的数组:
---------------------------------
| 10 | 20 | 30 | 0 | 0 |
---------------------------------
你也可以:
int baz [5] = { };
转换为:
-------------------------------
| 0 | 0 | 0 | 0 | 0 |
-------------------------------
或者你可能有:
int foo [] = { 16, 2, 77, 40, 12 };
转换为:
----------------------------------
| 16 | 2 | 77 | 40 | 12 |
----------------------------------
如果你正在处理类及其对象,你可以简单地调用你的构造函数:
Point aPoint[3] = {
Point( 3, 3 ),
Point( 13, 6 ),
Point( 32, 98 )
};
所有以前的规则也适用于此表格。 如果声明一个静态数组,它们将根据它们的默认类型进行初始化(例如int默认为0等)