Полнота списка инициализации члена c ++ - PullRequest
3 голосов
/ 23 июля 2010

должны ли списки инициализации членов класса в c ++ быть полными? или они могут просто инициализировать один или два члена данных в классе?

спасибо заранее!

Ответы [ 3 ]

5 голосов
/ 23 июля 2010

Они не должны быть полными.Вы можете не указывать базовые классы и не POD типы классов, которые могут быть построены по умолчанию, однако POD-типы остаются неинициализированными.в списке инициализации члена.

1 голос
/ 06 октября 2011

int имеет конструктор, см. Страуструп Раздел 6.2.8

int j = int(); 

языка программирования C ++. Инициализирует j в 0 (значение явного использования конструктора для встроенногоТип 0 преобразуется в этот тип, поэтому int () является другим способом записи 0. Конструкторы по умолчанию для встроенных типов важны, так что шаблоны могут вызывать конструкторы по умолчанию без беспокойства, даже для встроенных типов.

0 голосов
/ 23 июля 2010

Нет, они не должны быть полными - любые члены, которые не указаны в нем, будут созданы по умолчанию (включая любые базовые классы).

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

...