Это, наверное, очень простой вопрос, но я никогда не понял его правильно. Когда я объявляю переменные-члены, которые я обычно делаю внутри класса
class Bloke
{
public:
Bloke(): age(24) {}
int age;
}
Таким образом, я обычно объявляю после точки с запятой переменные-члены с помощью "membera(), memberb()" и т.д. Со временем я стал немного ленив и начал также включать объявления переменных-членов непосредственно в {}, т.е.
Bloke(){age=24;}
int age;
Или даже вне класса в конструкторе отдельно. Может кто-нибудь объяснить, если это неправильно? Благодарю.
Нет, это не так, и до С++ 11 это был единственный способ. Большинство людей, однако, рассмотрели бы первый способ быть более простым и более идиоматичным для С++ 11, он называется делегацией конструктора. В С++ 11 вы также можете выполнить встроенную инициализацию для некоторых типов:
class Bloke
{
public:
Bloke():{}
int age = 24;
};
Значение для возраста будет 24, если вы не измените его где-нибудь еще для всех инициализированных объектов. Делегация конструктора ИМО должна использоваться для любой ситуации, где это применимо, и сохранять тело конструктора для дополнительной работы.