2014-03-29 58 views
0

我有有一個像爲什麼我可以使用初始化列表來構造對象?

classA 
{ 
    classA(float x, float y, float z) { _x = x; _y = y; _z = z;} 
    float _x, 
    float _y, 
    float _z 
} 

我用ClassA a(1.0,2.0,3.0)構造對象三個字段clsss,現在我發現我可以使用

Class A = {1.0, 20.0, 3.0}; 

這是在C++ 11中的新功能?

+0

'CLASSA(浮動的x,浮Y,浮動Z):_x {X},_y {Y},_z {Z} {}'是更好..(或': _x(x),_y(y),_z(z){}'在C++之前11) – ikh

回答

1

是的,它被稱爲Uniform Initialization,它建立在初始化列表上,並試圖減輕最令人頭疼的解析錯誤。基本上它是一種可用於任何對象的初始化語法。

您可以在Wikipedia上閱讀更多關於它的信息。

1

是的,C++ 11在初始化時擴展了「{}」的使用,「=」也可以省略。 下面是一些例子:

int x={5}; 

double y {2.75}; 

short quar[3] {4,3,2}; 

int *p= new int [3] {2,3,5}; //c++ 11 


ClassName a(3,15,6);//old style 

ClassName a{3,15,6};//C++ 11 

ClassName a={3,15,6};//C++ 11 


vector<int> a3{4,6,1}; 
相關問題