【发布时间】:2013-05-01 13:00:24
【问题描述】:
使用虚拟复制构造函数,类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());
有什么缺点(除了它仅适用于“就地”创建)?现在没有人必须实现克隆,一切似乎都变得容易了。
【问题讨论】:
-
复制指针与复制指针不同。
标签: c++