2011年8月19日 星期五

C++11 new feature -- Uniform Initialization Syntax

http://www.softwarequalityconnection.com/2011/06/the-biggest-changes-in-c11-and-why-you-should-care/ >

初始化資料的方法, C++11增加了一些比較直觀且好用的初始化方法, 基本上看到後覺得這就是我之前一直以為應該要可以這樣做 但是不能做的方法, 現在都加入C++的新標準規範了..

直接看例子吧
1.

class C
{
int a;
int b;
public:
 C(int i, int j);
};

C c {0,0}; //C++11 only. Equivalent to: C c(0,0);

2. int* a = new int[3] { 1, 2, 0 }; /C++11 only
3.

class X {
  int a[4];
public:
  X() : a{1,2,3,4} {} //C++11, member array initializer
};

4.

// C++11 container initializer
vector vs={ "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();
};