1. 程式人生 > >C++中初始化方式的幾點特殊情況

C++中初始化方式的幾點特殊情況

在多數情況下,各個初始化方式之間可以相互等價的使用,不過也存在一些特例,總結如下:

1、使用拷貝初始化(使用“=”),只能提供一個初始值:

                                        string s5 = "hello";              // 拷貝初始化

                                        string s6 ("hello");              // 直接初始化

                                        string s7 (10, 'c');              // 直接初始化, s7的內容是cccccccccc

2、如果提供的是一個類內初始值,則只能使用拷貝初始化或使用花括號的形式初始化:

                                        struct Sales_data {

                                               std::string bookNo;

                                               unsigned units_sold = 0;

                                               double revenue = 0.0;

                                         };

3、如果提供的是初始元素值的列表,則只能把初始值都放在花括號裡進行列表初始化,而不能放在圓括號裡:

                                         vector<string> v1{"a", "an", "the"};    // 列表初始化

                                         vector<string> v2("a", "an", "the");    // 錯誤

後續有新的發現會再新增