Russian Qt Forum

Программирование => С/C++ => Тема начата: Disa от Январь 30, 2013, 11:52



Название: С++ 11, список инициализации
Отправлено: Disa от Январь 30, 2013, 11:52
Наткнулся тут на стекофервлове:

Код
C++ (Qt)
struct Base { };
 
struct Class : Base
{
   int mem{ 0 };  // init non-static data member
 
   Class(int i)
   : Base{}   // init base class
   , mem{i}   // init member
   {
     int j{i};   // init local var
 
     int k = int{0};  // init temporary
 
     f( { 1 } );  // init function arg
 
     int* p = new int{1};  // new init
 
     // int k(int());  // most vexing parse, declares function
     int k{ int{} };   // ok, declares variable
 
     int i[4]{ 1,2,3,4 };   // init array
   }
 
   Class f(int i)
   {
     return { i };   // init return value
   }
};
 
Class c{1};   // init global var

Больше всего заинтересовала предпоследняя запись:

Код
C++ (Qt)
Class f(int i) {
     return { i };   // init return value
   }
 

Вопрос - зачем может понадобится вернуть значение, которое я только что передал при инициализации?


Название: Re: С++ 11, список инициализации
Отправлено: Igors от Январь 30, 2013, 12:57
Вопрос - зачем может понадобится вернуть значение, которое я только что передал при инициализации?
Передали int а вернули-то уже класс. Хотя конечно все равно извращение  :)


Название: Re: С++ 11, список инициализации
Отправлено: Авварон от Январь 30, 2013, 13:38
Не уверен, но по идее, такое должно работать:
Код:
QStringList getSuffixes()
{
    return { "jpg", "jpeg" };
}


Название: Re: С++ 11, список инициализации
Отправлено: Disa от Февраль 05, 2013, 23:47
Ну в общем это какой-то "своеобразный" вариант синт. сахара?