Named Constructor イディオム

名前付きコンストラクタ


引数コンストラクタに名前を持たせようというものです

#include <string>

using namespace std;

class person {
public:
    static person create_man(int age, const string& name)
    {
        return person(age, name, true);
    }

    static person create_woman(int age, const string& name)
    {
        return person(age, name, false);
    }

private:
    person(int age, const string& name, bool sex)
        : age_(age), name_(name), sex_(sex) {}

    int    age_;
    string name_;
    bool   sex_; // true:man false:woman
};


int main()
{
    person johnny = person::create_man(38, "ジョニー");
    person millia = person::create_woman(18, "ミリア");
    return 0;
}


参考サイト
What is the "Named Constructor Idiom"?