原型模式

浅拷贝:就是给对象中的每个成员变量进行复制,就是把A1类中的变量直接赋给A2类中变量,属于值传递,但是涉及到有new之类内存分配的地方,他们却是共享内存的。

深拷贝:就是不仅使用值传递,而是要每个变量都有自己一份独立的内存空间,互不干扰。
常用场景
基本就是你需要从A的实例得到一份与A内容相同,但是又互不干扰的实例的话,就需要使用原型模式。
优点
1.使用拷贝模式比直接new一个对象的开销要小的多。

2.可以在程序运行时(对象属性发生了变化),得到一份内容相同的实例,但之间还不会相互干扰。
class Resume
{
public:
    string name;
    Resume(string s) { name = s; }
    void setName(string s) { name = s; }
    Resume *clone()
    {
        Resume *p = new Resume(name);
        *p = *this;
        return p;
    }
};
int main()
{
    Resume *r1 = new Resume("Li");
    Resume *r2 = r1->clone();
    cout << r1->name << endl;
    r2->setName("Liu");
    cout<< r2->name <<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/osbreak/p/10111727.html