原型模式其实就是从一个对象再创建另一个对象,并且不需要知道任何创建的细节。其实就相当于拷贝。
/*********************************************************************Copy.h*****************************************************************/
#include <iostream>
#pragma once;
using namespace std;
class Copy
{
int n,m;
public:
int *p;
Copy()
{
};
Copy(const Copy& copy)
{
n = copy.n;
m = copy.m;
p = new int;
*p = *(copy.p);
}
void SetNumber(int a,int b)
{
n=a;
m=b;
}
Copy* Clone()
{
return new Copy(*this);
}
void show()
{
cout<<"Number is "<<n<<" and "<<m<<endl;
cout<<"p is "<<*p<<endl;
}
};
/*********************************************************************man.cpp*****************************************************************/
#include "Copy.h"
int main()
{
Copy *myCopy = new Copy;
myCopy->SetNumber(10,20);
int p =25;
int *q = &p;
myCopy->p = q;
myCopy->show();
Copy *myCopy1 = myCopy->Clone();
delete myCopy;
myCopy = NULL;
myCopy1->show();
getchar();
return 0;
}
输出:
Number is 10 and 20
p is 25
Number is 10 and 20
p is 25
//即使myCopy指针被销毁了,依然不会影响拷贝的值