Constructor)[編集]意図[編集]あるオブジェクトのコピーか、新しいオブジェクトを、その具体的な型を知ることなしに生成する。動機[編集]クラス階層中のメンバ関数の多態的な呼び出しを使うことは、オブジェクト指向プログラミングのコミュニティではよく知られたことである。behaves-as-a(~として振る舞う)関係)を実装する方法の一つである。クラス階層中の生存期間管理(生成、コピー、破棄)関数を多態的に呼び出すことも場合によっては便利である。オブジェクトの生成やコピーに対しては同様のものは存在しない。オブジェクトの生成には常にその型をコンパイル時に知っている必要がある。多態的なオブジェクトの生成やコピーを可能とする。メンバ関数を用いて以下のように書ける。仮想コンストラクタイディオムの使用。つの純粋仮想関数を実装し、型名(Manager)を用いてその型のオブジェクトを生成する。関数は、どのように仮想コンストラクタイディオムが使用されるかを示している。関数は、実際にはなにを複製しているかを知らない。複製していることを知っているだけである。正しいインスタンスを生成する責任は派生クラスに委譲されている。関数は変更に対して影響を受けない。なく、そのクラス自身(Manager)である。派生クラスが関数をオーバーライドするとき、返値の型を基本クラスの関数の返値の型の派生型とすることができる。types)として知られている。Return)イディオムを利用すべきである。ようになり、もはや共変の返値型ではなくなりコンパイルに失敗するはずである。そのような場合では、派生クラスの仮想コンストラクタ関数は親クラスと正確に同じ型を返さなければならない。表示-継承ライセンスのもとで利用できます。追加の条件が適用される場合があります。詳細については利用規約を参照してください。統計Cookieに関する。