C++ 11 之初始化

xiaoxiao2021-02-28  114

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. 对于结构数据,直接初始化;

class C { int a; int b; public: C(int i, int j); }; C c {0,0}; //C++11 only. 相当于 C c(0,0); int* a = new int[3] { 1, 2, 0 }; /C++11 only class X { int a[4]; public: X() : a{1,2,3,4} {} //C++11, 初始化数组成员 };4.对于容器来说,也不要用push_back() // C++11 container initializer vector vs<string>={ "first", "second", "third"}; map singers = { {"Lady Gaga", "+1 (212) 555-7890"}, {"Beyonce Knowles", "+1 (212) 555-0987"} };5.类中也可以直接初始化; class C { int a=7; //C++11 only public: C(); }; 6.扩展 class A{ int c; }; int main() { A *w = new A; //new完之后的c未初始化; A *x = new A(); //new完之后的c已初始化; } C++03存着这种奇怪的问题,让你有的时候用的很不放心;所以尽情用C++11吧!

转载请注明原文地址: https://www.6miu.com/read-71288.html

最新回复(0)