2009-12-19 3 views
0

Мне сказали, что есть несколько ситуаций, в которых для инициализации должен использоваться список инициализации.один вопрос о списке инициализации в C++

Есть три случая

1) Const член

2) ссылка

3) члены без конструкторов по умолчанию

Является ли это правильно? Любой хотел бы это уточнить? Есть ли другой случай, который я пропустил?

Спасибо!

ответ

2

... или типы классов POD или массивы типов классов POD, которые прямо или косвенно содержат элемент с константой. Но да, ваши основные случаи.

Для вашего (3) это применимо только в том случае, если конструкторы, объявленные пользователем, отличные от стандартного constuctor. Если вообще не существует конструкторов, объявленных пользователем, тогда элемент может быть инициализирован по умолчанию, если он не упоминается в списке инициализаторов.

+0

Можете ли вы показать мне один пример кода для случая 3? Спасибо! – skydoor

+0

Что это значит? Код, который компилируется с членом типа класса, который не имеет каких-либо конструкторов или кода, который не существует, потому что тип класса имеет конструктор, отличный от стандартного? –

+0

Я думаю, что код, который не потому, что у класса есть конструктор, отличный от стандартного? – skydoor

0

Да, вы правы.

Он также используется для инициализации элементов данных базового класса в случае наследования.

+0

как насчет статического члена? – skydoor

+0

инициализация статического члена должна выполняться в момент его определения или использовать статическую функцию, чтобы сделать это скорее, чем список инициализации. – Ashish

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