Всегда используй списки инициализации в своих конструкторах. Это лучшая практика для инициализации объектов-членов.
Пример правильного подхода:
Fred::Fred() : x_(whatever) { }
Списки инициализации дают значительные преимущества в производительности:
Неэффективная альтернатива (с использованием присваивания):
Fred::Fred() { x_ = whatever; }
Этот подход заставляет компилятор:
whateverИспользуй списки инициализации даже для встроенных типов (int, char*, float) — ради единообразия. Этот подход также работает с нестатическими const-членами и членами-ссылками, которые невозможно присвоить в теле конструктора.
Руководствуйся здравым смыслом в случаях, когда:
this и требуется избежать предупреждений компилятораПримечание: Такие случаи редки. По умолчанию используй списки инициализации, если нет конкретной технической причины от них отказаться.
Списки инициализации позволяют компилятору конструировать объекты членов прямо на месте, в то время как присваивание в теле конструктора требует создания и уничтожения как минимум одного временного объекта.
Новый — ещё не проверен сообществом
Вы