разница в объявлении объектов-членов

0

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

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

Таким образом, я обычно объявляю после точки с запятой переменные-члены с помощью "membera(), memberb()" и т.д. Со временем я стал немного ленив и начал также включать объявления переменных-членов непосредственно в {}, т.е.

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

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

Теги:
declaration

1 ответ

0

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

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

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

  • 0
    Я думал, что у меня нет C ++ 11 Я использую MingW 3.4.5 - Это C ++ 11?
  • 0
    @ user2856452 не знаком с этим компилятором, но я почти уверен, что вы не сможете выполнить делегирование конструктора без c ++ 11, в любом случае мой ответ по-прежнему применим
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню