拥有一个使用默认参数的类构造函数是一种好习惯,还是应该使用单独的重载构造函数?例如:
// Use this...
class foo
{
private:
std::string name_;
unsigned int age_;
public:
foo(const std::string& name = "", const unsigned int age = 0) :
name_(name),
age_(age)
{
...
}
};
// Or this?
class foo
{
private:
std::string name_;
unsigned int age_;
public:
foo() :
name_(""),
age_(0)
{
}
foo(const std::string& name, const unsigned int age) :
name_(name),
age_(age)
{
...
}
};
任何一个版本似乎都可以工作,例如:
foo f1;
foo f2("Name", 30);
您喜欢或推荐哪种风格,为什么?
最佳答案
绝对是风格问题。我更喜欢带有默认参数的构造函数,只要参数有意义。标准中的类也使用它们,这对它们有利。
需要注意的一点是,如果您对除一个参数以外的所有参数都有默认值,那么您的类可以从该参数类型隐式转换。查看 this thread了解更多信息。
关于c++ - C++ 构造函数的默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/187640/