2013-10-09 3 views
0

Это, вероятно, очень простой вопрос, но я никогда не понял его правильно. Когда я объявлять переменные-член, я обычно делаю в классеРазница в декларировании объектов-членов

class Bloke 
    { 
    public: 
    Bloke(): age(24) {} 
    int age; 
    } 

Итак, я обычно объявляю после запятой переменных-членов с «membera(), memberb()» и т.д. В течение долгого времени я получил немного ленивые и начал также включать декларации переменных-членов непосредственно в {}, то есть

Bloke(){age=24;} 
int age; 

Или даже вне класса в конструкторе отдельно. Может кто-нибудь объяснить, если это неправильно? Благодарю.

ответ

0

Нет, это не так, и до C++ 11 это был единственный способ. Большинство людей, однако, рассмотрели бы первый способ быть более простым и более идиоматичным для C++ 11, он называется делегацией конструктора. В C++ 11 вы также можете сделать инлайн инициализации для некоторых типов, как это:

class Bloke 
{ 
    public: 
    Bloke():{} 
    int age = 24; 
}; 

Значение возраста будет 24, если не изменить его где-нибудь еще для всех инициализированных объектов. Делегацию конструктора ИМО следует использовать для любой ситуации, где это применимо, и сохранять тело конструктора для дополнительной работы.

+0

Я думал, что у меня нет C++ 11 Я использую MingW 3.4.5 - Это C++ 11? – user2856452

+0

@ user2856452 не знакомы с этим компилятором, но я уверен, что вы не можете выполнить делегирование конструктора без C++ 11, в любом случае мой ответ по-прежнему применяется – aaronman

+0

Интересно, как при попытке синтаксиса C++, как двойные векторы с «>>», у меня есть чтобы иметь пробел между «>>» и кто-то сказал в C++ 11, вы можете использовать >>. Так что я думал, что у меня нет C++ 11 – user2856452

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