#include <iostream>
using namespace std;
class Clone{
public:
virtual Clone * clone() = 0;
virtual ~Clone(){}
};
class Clone1 : public Clone{
public:
Clone1(int id, string name) :Clone(), m_id(id), m_name(name)
{}
//拷贝构造函数默认浅拷贝,注意指针的时候实现深拷贝
Clone1(const Clone1 & clone1){
this->m_id = clone1.m_id;
this->m_name = clone1.m_name;
cout<<"123"<<endl;
}
Clone * clone(){
//会调用拷贝构造函数
return new Clone1(*this);
}
private:
int m_id;
string m_name;
};
int main()
{
cout << "Hello World!" << endl;
Clone * example1 = new Clone1(1, "1");
Clone * example2 = example1->clone();
cout<<example1<<endl<<example2<<endl;
return 0;
}