首页 > 代码库 > C++ 11 之初始化
C++ 11 之初始化
1.4中不同初始化的形式
a.string s("zhl")、int i(3); //括号初始化
b.string s="zhl"、int i= 3; //等号初始化
c.int arr[4] = {1,2,3,4}、struct tm today ={0}; //POD数据用大括号
d.struct s { int x; s(): x(0){}}; //构造函数成员初始化;
2.C++03 中不能初始化 POD 数组的类成员,也不能在使用 new[] 的时候初始 POD 数组,C++ 11终于用大括号统一了;
ps: POD:http://www.cnblogs.com/viscount/p/5842895.html
3. 对于结构数据,直接初始化;
1 class C 2 { 3 int a; 4 int b; 5 public: 6 C(int i, int j); 7 }; 8 C c {0,0}; //C++11 only. 相当于 C c(0,0); 9 int* a = new int[3] { 1, 2, 0 }; /C++11 only10 class X {11 int a[4];12 public:13 X() : a{1,2,3,4} {} //C++11, 初始化数组成员14 };
4.对于容器来说,也不要用push_back()
1 // C++11 container initializer2 vector vs<string>={ "first", "second", "third"};3 map singers =4 { {"Lady Gaga", "+1 (212) 555-7890"},5 {"Beyonce Knowles", "+1 (212) 555-0987"}6 };
5.类中也可以直接初始化;
1 class C2 {3 int a=7; //C++11 only4 public:5 C();6 };
6.扩展
class A{ int c; };int main(){ A *w = new A; //new完之后的c未初始化; A *x = new A(); //new完之后的c已初始化;}C++03存着这种奇怪的问题,让你有的时候用的很不放心;所以尽情用C++11吧!
C++ 11 之初始化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。