假设我有一个指针,我希望它被初始化为nullptr。哪个选项更好呢?是创建一个构造函数将成员变量设置为nullptr,还是在头文件声明中直接初始化为nullptr?
两者有什么区别吗?后者是否被认为是不良实践?
提前感谢。
假设我有一个指针,我希望它被初始化为nullptr。哪个选项更好呢?是创建一个构造函数将成员变量设置为nullptr,还是在头文件声明中直接初始化为nullptr?
两者有什么区别吗?后者是否被认为是不良实践?
提前感谢。
C.45: Don't define a default constructor that only initializes data members; use in-class member initializers instead
Reason
Using in-class member initializers lets the compiler generate the function for you. The compiler-generated function can be more efficient.
Example, bad
class X1 { // BAD: doesn't use member initializers string s; int i; public: X1() :s{"default"}, i{1} { } // ... };
Example
class X2 { string s = "default"; int i = 1; public: // use compiler-generated default constructor // ... };
Enforcement
(Simple) A default constructor should do more than just initialize member variables with constants.
std::unique_ptr
,其默认构造函数将其初始化为“null”。 - Some programmer dude