2013-05-09 2 views
3

Я понимаю, что сейчас это вполне приемлемо для инициализации Ивара значения по умолчанию:Установка значений по умолчанию для Ивар в C++ 2011

class A{ 
    MyType T=MyValue; 
    } 

Идея заключается в том, что MyType уже определена по умолчанию, когда класс инстанцирован.

Но мне нужно уточнить, используется ли использование инициализирующего списка членов конструктора для этого ivar. Если да, то какова была бы установка значения по умолчанию, как указано выше?

+1

Почему вы инициализируете переменную-член в конструкторе, если вы уже инициализируете его таким образом? –

+0

Это на самом деле точно мой вопрос @KevinBallard – johnbakers

+3

Что означает «ivar»? –

ответ

1

Установка значения переменной-члена с помощью инициализатора элемента в классе позволяет специфицировать значение по умолчанию для члена, если существует разумное значение по умолчанию. Это позволяет избежать повторения инициализации по умолчанию в конструкторах, где допустимо значение по умолчанию. Значение по умолчанию может быть переопределено списком инициализаторов конструктора, если значение по умолчанию неприемлемо.

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

2
  • Если элемент класса всегда инициализирован с одинаковым значением во всех конструкторах, используйте встроенный инициализатор. Это устраняет избыточность и, возможно, улучшает читаемость.

  • Если разные конструкторы инициализируют член по-разному, используйте списки инициализатора конструктора.

В списке инициализаторов можно переопределить встроенный инициализатор, но это стилистически сомнительно. Если вы сомневаетесь, не делайте этого и/или проконсультируйтесь с руководством по стилю вашего проекта.

+0

Я предполагаю, что термин «встроенный инициализатор» относится к технике, которую я показываю в своем вопросе? – johnbakers

+1

@Fellowshee: Да. Стандартным термином является «скользящий или равный-инициализатор», но я думал, что это не очень полезный термин :-) –

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