1. ホーム
  2. c++

[解決済み] C++のコンストラクタでデフォルトのパラメータを設定する【終了】。

2022-03-09 14:53:11

質問

デフォルトパラメータを使用するクラスコンストラクタを持つことは良い習慣ですか、それとも別のオーバーロードされたコンストラクタを使用すべきですか? 例えば

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

どのようなスタイルが好きですか、またはお勧めですか?

解決方法は?

間違いなく、スタイルの問題です。 私は、パラメータが意味をなしている限り、デフォルトのパラメータを持つコンストラクタを好みます。 標準的なクラスは、このパラメータを使用しています。

気をつけなければならないのは、1つのパラメータ以外をデフォルトにしてしまうと、クラスがそのパラメータ型から暗黙のうちに変換されてしまうことです。 チェックアウト このスレッド をご覧ください。