在编写C++11代码时,在类的头文件中设置类成员的默认值是一个好的实践吗?
还是最好在类的构造函数中设置默认值?
编辑:
我的意思是:
foo.h:
#include <string>
using std::string;
class Foo{
private:
string greet = "hello";
public:
Foo();
};
foo.cpp(当然需要必要的头文件,但不包括类内初始化):
Foo::Foo(){
greet = "hello";
}
哪一个更好,为什么?
Foo::Foo():greet("hello") { }
- 这避免了默认初始化+赋值,而是采用直接按值初始化。对于复杂类型,这可能会产生显着的差异,更重要的是:某些类型(引用、常量成员、非默认可构造的类型)只能通过这种方式初始化(在构造函数中,除了分配默认值)。 - Aconcagua