title: Default parameters with C++ constructors
body: <p>Is it good practice to have a class constructor that uses default parameters, or should I use separate overloaded constructors?  For example:</p>
  
  <pre><code>// Use this...
  class foo  
  {
  private:
      std::string name_;
      unsigned int age_;
  public:
      foo(const std::string&amp; 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&amp; name, const unsigned int age) :
          name_(name),
          age_(age)
      {
          ...
      }
  };
  </code></pre>
  
  <p>Either version seems to work, e.g.:</p>
  
  <pre><code>foo f1;
  foo f2("Name", 30);
  </code></pre>
  
  <p>Which style do you prefer or recommend and why?</p>