C ++ инициализация [дубликат]

Возможный дубликат:
Классовая конструкция с начальными значениями

Пока я смотрел на пример с ++ вhttp://en.wikipedia.org/wiki/Delegation_pattern Я заметил то, чего раньше не видел:

C() : i(new A()) { }

Мой вопрос: чем эта строка кода отличается от:

C() {
    i = new A();
}

Что значит: после конструктора сделать? Что делает скобки вокругnew A() делать?

 karthaxx30 мар. 2012 г., 20:13
Я не знал, как это называется, поэтому я не знал, что искать, извините за дубликат, я буду читать темы, на которые вы ссылались. Благодарю.

Ответы на вопрос(1)

Решение Вопроса

Это называетсясписок инициализации, Он используется для инициализации членов данных класса.

C() {
    i = new A(); // i is not initialized here, here assignment is taking place.
}
 xis30 мар. 2012 г., 20:16
@EdHeal Потому что последовательность инициализации переменных класса - это просто последовательность их объявления.
 Ed Heal30 мар. 2012 г., 20:32
@xis - скажем, например, один - это массив, а другой - размер массива. Вещи становятся неопределенными.
 Ed Heal30 мар. 2012 г., 20:12
Существует также множество причин делать это в том же порядке, что и их заявления.
 chris30 мар. 2012 г., 20:13
Кроме того, до C ++ 11 константные члены могли инициализироваться только с помощью синтаксиса инициализатора элементов.

Ваш ответ на вопрос