CppCoreGuidelines C.45 如果只是初始化数据成员变量,不需要定义默认构造函数,用类内成员初始式即可
09 October 2022
C.45: Don’t define a default constructor that only initializes data members; use default member initializers instead
理由
使用类内成员初始式(member initializer)可以让编译器自动生成函数。编译器生成的函数效率更好。
例子
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 // ... };
强化
- (简单)默认构造函数不只是用常量初始化成员变量