C 11中用 初始化,有等於號和沒等於號的區別是什麼?

時間 2021-06-02 23:42:45

1樓:

2樓:

在我看來,題主的例子正是這兩者唯一的區別,即帶等號的copy-list-initialization不允許呼叫explicit建構函式。此規定見 [over.match.

list] :

In copy-list-initialization, if an explicit constructor is chosen, the initialization is ill-formed.

由此延伸出的引用的列表初始化也是一樣:

structA;

constA&

a1=;// error

constA&

a2;// ok

順便,C++17後std::tuple的建構函式不再總是explicit,用copy-list-initialization也可以了。

3樓:藍色

第一種叫copy-initialization, 第二種叫braced-initialization,若你要完整的知道失敗的原因,你需要知道標準對這兩者的差別:Effective Modern C++ Note 01,可以參考我這個文章裡面提到當建構函式是explicit的時候,copy-initialization失敗的原因。

C語言中字元陣列用 初始化?

Elias Wang 我們大致先把概念理清一下 字元陣列 初始化 在宣告變數的同時,為變數分配儲存空間,並初始化資料34 foo string literal 形式,初始化變數位址39 f o o 0 array 形式 賦值 變數已經被宣告,再對變數已有的儲存空間進行操作34 foo string ...

C 類本身的初始化和靜態欄位的初始化到底發生在什麼時候?

餘葉 其實就兩個構造器。乙個是靜態的,乙個是普通的。靜態構造器得需要你第一次訪問到該類的時候會被觸發。建立的時候,包括 static 成員變數的初始化和static構造器,其實 static 成員變數會整合進static構造器裡面的。而普通成員變數也會整合進普通構造器裡面的。 天煞 如 Sai說的,...

c 變數初始化規則有哪些?

針對C 11,簡單地說,我認為可以分為下面兩條 使用auto關鍵字的初始化 auto i 1 這樣的,注意的地方就是用了auto就不要用 不要寫成auto i。這兩個是不一樣的,具體請參考initializer list這個東西。不使用auto關鍵字,使用 的初始化。int i 這樣。不要用auto...