1. 程式人生 > >C++11 列表初始化

C++11 列表初始化

參考:深入應用C++11程式碼優化與工程及應用

C++98/03中的物件初始化方法很多,如下:

//initializer list
int i_arr[3] = {1, 2, 3};    //普通陣列

struct A
{
    int x;
    struct B
    {
        int i;
        int j;
    }b;
}a = {1, {2, 3} };        //POD型別

//拷貝初始化(copy-initialization)

int i = 0;

class Foo
{
   public:
        Foo(int) {}
}foo = 123;        //需要拷貝建構函式

//直接初始化(direct-initiation)
int j(0);
Foo bar(123);

這些不同的初始化方法,都有各自的適用範圍和作用。種類繁多,無法通用。

為了統一初始化方式,並且讓初始化具有確定的效果,C++11中提出了列表初始化(List-initialization)的概念。

未完