Classes and class hierarchies
C.45
Не определяйте конструктор по умолчанию, который только инициализирует члены данных; вместо этого используйте инициализаторы членов по умолчанию
Причина
Использование инициализаторов членов по умолчанию позволяет компилятору генерировать функцию для вас. Функция, сгенерированная компилятором, может быть более эффективной.
Плохой пример
class X1 { // BAD: doesn't use member initializers
string s;
int i;
public:
X1() :s{"default"}, i{1} { }
// ...
};
Пример
class X2 {
string s {"default"};
int i {1};
public:
// use compiler-generated default constructor
// ...
};
Применение
(Simple) Отметьте, если инициализатор явного члена конструктора по умолчанию является константой, и рекомендуйте, чтобы константа должна быть написана как инициализатор члена данных вместо этого.