Существует только один способ инициализировать экземпляры базового класса и нестатические переменные-члены, используя список инициализаторов.
Если вы не укажете базовую или нестатическую переменную-член в списке инициализатора вашего конструктора, тогда этот элемент или база будут инициализированы по умолчанию (если элемент / база имеет тип не-POD или массив не -POD классы) или оставлено неинициализированным в противном случае.
После ввода тела конструктора все базы или элементы будут инициализированы или оставлены неинициализированными (т.е. они будут иметь неопределенное значение). В теле конструктора нет возможности влиять на то, как они должны быть инициализированы.
Возможно, вы сможете назначить новые значения членам в теле конструктора, но невозможно назначить const
членов или членов типа класса, которые были сделаны не присваиваемыми, и невозможно перепривязать ссылки.
Для встроенных типов и некоторых пользовательских типов назначение в теле конструктора может иметь тот же эффект, что и инициализация с тем же значением в списке инициализатора.
Если вы не ввели имя члена или базы в списке инициализатора, и этот объект является ссылкой, имеет тип класса без доступного объявленного пользователем конструктора по умолчанию, квалифицирован const
и имеет тип POD или тип класса POD или массив типа POD-класса, содержащий const
квалифицированный член (прямо или косвенно), тогда программа некорректна.