2010-07-16 2 views
2

Предположим, мы имеем следующие два класса:будет синтаксис инициализации, действующий в предстоящем стандарте C++ 0x?

class Temp{ 
public: 
    char a; 
    char b; 
}; 
class Final{ 
private: 
    int a; 
    char b; 
    char c; 
public: 
    Final(Temp in):b(in.a),c(in.b){} 
    //rest of implementation 
}; 

мы можем инициализировать объект Заключительной класса с помощью следующего синтаксиса в наступающем C++ 0x стандарт:

Final obj(Temp{'a','b'}); 

ответ

2

C++ 0x добавляет равномерную инициализацию как для типов POD-структуры и массивов, используя фигурные скобки ({}) для всех типов, а также специальные списки инициализаторов для поддержки переменного количества элементов/аргументов в них, как и массив. Так что ваш пример можно записать в виде:

Final obj = { { 'a', 'b' } }; 

или

Final obj { { 'a','a' } }; 
+0

спасибо тела, я думаю, что будет этой функция в удивительном !!! – Pooria

Смежные вопросы