バーチャル コピー コンストラクターを使用すると、クラスVehicle
には、copy()
継承されたすべてのクラスCar
が実装するようなバーチャル メンバー関数があります。
後で、他のいくつかのクラスは、メンバー変数として任意のタイプの車両を持つことができます。
struct Foo {
Vehicle *v;
Foo(const Vehicle &veh) {
v = veh.clone();
}
};
要点がわかりません。このように「その場で」削除しclone()
て実行してみませんかnew
struct Foo {
Vehicle *v;
Foo(Vehicle *veh) {
v = veh; //veh has no clone()
}
~Foo() {
delete v;
}
};
//elsewhere
Foo f(new Car());
欠点は何ですか (「インプレース」作成でのみ機能すること以外)? 今ではクローンを実装する必要はなく、すべてがはるかに簡単に思えます。