我正在學習新的C++ 11功能 - 統一初始化。寫小程序:C++中的統一初始化和默認構造函數參數11
#include <iostream>
using namespace std;
class C {
public:
C(int a = 1, int b = 2) : a_{a}, b_{b}, n{0,1,2,3,4} {};
int n[5];
int a_,b_;
};
int main()
{
C c = C{}; // should call C(int a = 1, int b = 2) with default arg.
cout << c.a_ << " " << c.b_ << endl;
return 0;
}
但是,我得到意想不到的結果0 0
。換句話說,一切都被初始化爲零。這可能發生的唯一方法:1.調用隱式默認構造函數,或2.初始化沒有正確完成。 (3.編譯器???)
爲什麼我得到意想不到的結果?在C++ 11中使用統一初始化的構造函數語法是否有任何更改?
編輯:採用最新的英特爾編譯:
1>------ Rebuild All started: Project: Unif_Init (Intel C++ 13.0), Configuration: Debug Win32 ------
1> Source.cpp
1> xilink: executing 'link'
1> xilink: executing 'link'
1> Unif_Init.vcxproj -> C:\Users\alex\documents\visual studio 2012\Projects\Unif_Init\Debug\Unif_Init.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
什麼編譯器?我無法用gcc重現。 –
@JesseGood英特爾C++編譯器13 – newprint