Domyślne parametry z konstruktorami C ++ [zamknięte]

Czy dobrą praktyką jest posiadanie konstruktora klasy, który używa parametrów domyślnych, czy powinienem używać oddzielnych przeciążonych konstruktorów? Na przykład:

// 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)
    {
        ...
    }
};

Wydaje się, że każda wersja działa, np .:

foo f1;
foo f2("Name", 30);

Który styl preferujesz lub polecasz i dlaczego?

questionAnswers(12)

yourAnswerToTheQuestion