代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
virtual Person* clone() = 0;
virtual void print() = 0;
};
class CPPProgrammer :public Person
{
public:
CPPProgrammer()
{
this->name = "";
this->age = 0;
}
CPPProgrammer(string name, int age)
{
this->name = name;
this->age = age;
}
void setResume(char* resume)
{
if (this->resume != NULL)
{
delete this->resume;
}
this->resume = new char(strlen(resume) + 1);
strcpy(this->resume, resume);
}
virtual Person* clone()
{
CPPProgrammer* temp= new CPPProgrammer;
*temp = *this;
temp->resume = new char(strlen(resume) + 1);
strcpy(temp->resume, resume);
return temp;
}
virtual void print()
{
cout << "name: " << this->name << ", age:" << this->age << ", resume: " << resume << endl;
private :}
string name;
int age;
char* resume;
};
void main() {
CPPProgrammer* prog = new CPPProgrammer("james", 22);
prog->setResume("c++");
prog->print();
Person* clone = prog->clone();
clone->print();
}