c++ - C++ 构造函数的默认参数

标签 c++ constructor coding-style overloading

拥有一个使用默认参数的类构造函数是一种好习惯,还是应该使用单独的重载构造函数?例如:

// 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/

相关文章:

java - java游戏客户端/mysql数据库的认证机制

android - 如何在 cocos2d x for Android 中检测设备方向变化

c++ - 无法检查模板参数是否是传递函数标识符时获得的参数

javascript - 为什么构造函数只能返回一个对象?

variables - 其他语言是否使用 Foo、Bar 之类的东西?垃圾邮件、鸡蛋

c++ - 如何将数字放入某些组?

c# - 为什么不在构造函数中调用可覆盖的方法?

c++ - 使用C++11继承构造函数时如何初始化派生类成员?

for-loop - Golang 一行for循环

c++ - 浮点运算的编程风格