如何在不使用C++11功能的情况下初始化类中的数组
How do I initialize an array within a class without using C++11 Features?
如何在不使用初始化列表的情况下在c++中初始化类中的数组(我认为这是c++11的一个功能)?遗憾的是,我的编译器(VS2013)并不完全支持c++11。
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 ' '
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等)进行初始化
相关文章:
- 如何在不知道属性具有哪些构造函数的情况下初始化属性?
- 在没有库的情况下初始化 OpenGL
- 在没有构造函数的情况下初始化 const c++ 类
- 默认情况下初始化时 POD 是否给予特殊处理 (C++14)?
- 为什么默认情况下初始化局部变量
- 有没有一种方法可以在不使用std ::移动的情况下初始化类构建类的类
- 如果在没有 new 运算符的情况下初始化,C++是否将类对象视为值类型
- 如何在没有循环的情况下初始化 std::vector
- 如何在不使用指针的情况下初始化具有可变大小的 2D 数组
- 如何在给定包含类的实例的情况下实例化嵌套类
- 在不使用"new"的情况下实例化参数参数中的对象
- 在不使用动态数组的情况下初始化数组时出现问题
- 如何在没有初始化对象的情况下初始化对象的管理器shared_ptr?
- 在没有 new 关键字的情况下初始化C++对象的内存从何而来
- 如何在没有main的情况下初始化谷歌测试
- 在下面的代码中,如何在不使用伪值的情况下初始化类成员
- 如何在不使用C++11功能的情况下初始化类中的数组
- 如何在<int>没有循环的情况下初始化值为 {1,1,1,...,1} 的向量 v(1000)C++?
- 在没有实例变量的情况下初始化派生类中的"inherited static members"
- wxWidgets:如何在不使用宏和不进入主应用程序循环的情况下初始化wxApp