标签:c++ 方法 构造 void 是什么 拷贝构造函数 函数 创建型 oid
这种模式主要是用于获取当前实例的拷贝。
假如当前基类有很多派生类,而我们只有基类指针而无法确定指向对象时,是无法直接执行拷贝动作的。因为拷贝时需要显式调用该派生类的拷贝构造函数,也就必须要确定派生类的类型。
为了解决这个问题,在基类中添加clone方法,通过return new (*this)返回当前对象。
class Juice{
public:
virtual void show() = 0;
virtual Juice* clone() = 0;
};
class AppleJuice : public Juice{
public:
void show(){
cout<< "this is applejuice"<<endl;
}
Juice* clone(){
return new AppleJuice(*this);
}
};
class OrangeJuice: public Juice{
public:
void show(){
cout<<"this is orangejuice"<<endl;
}
Juice* clone(){
return new OrangeJuice(*this);
}
};
int main(){
Juice* p1 = new OrangeJuice();
/*
传了很久很久 以至于忘了p1是什么
*/
//Juice* p2 = p1->clone();
p1->show();
}
标签:c++ 方法 构造 void 是什么 拷贝构造函数 函数 创建型 oid
原文地址:https://www.cnblogs.com/corineru/p/12001763.html