C++ 11 之初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 only
10 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 initializer
2 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 C
2 {
3  int a=7; //C++11 only
4 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 之初始化的主要内容,如果未能解决你的问题,请参考以下文章

C++ 11 之初始化

C++ 解释器/控制台/片段编译器

用于初始化数组的 c++ 语法

如何通过 viewModels 获取 viewModel? (片段-ktx)

为啥此代码片段返回意外结果?

这些 C++ 代码片段有啥作用?