【发布时间】:2019-12-19 18:17:45
【问题描述】:
我的类结构如下:
class P {
public:
virtual std::auto_ptr<P> clone() const=0;
};
class A : public P {
public:
std::auto_ptr<P> clone() const {
return std::auto_ptr<P>(new A(*this));
}
};
class B : public P {
public:
std::auto_ptr<P> clone() const {
return std::auto_ptr<P>(new B(*this));
}
};
class C : public P {
public:
std::auto_ptr<P> clone() const {
return std::auto_ptr<P>(new C(*this));
}
};
这只是复制构造函数的代码:A、B、C 类都有不同的代码,否则。这里代码重复很多,能不能简化一下?
【问题讨论】:
-
旁注:请记住 std::auto_ptr 在 C++11 中已被弃用并在 C++17 中被删除
-
@AdamStepniak 我知道,我仅限于标签中定义的 C++03 约束。
-
回复:“这只是复制构造函数的代码”——不,这里没有用户定义的复制构造函数。
clone()不是复制构造函数。但是每个clone()函数都使用它的类的复制构造函数。