码迷,mamicode.com
首页 > 其他好文 > 详细

原型模式

时间:2018-12-13 01:11:10      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:return   运行   模式   main   col   优点   深拷贝   nbsp   一个   

 

浅拷贝:就是给对象中的每个成员变量进行复制,就是把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;
}

 

原型模式

标签:return   运行   模式   main   col   优点   深拷贝   nbsp   一个   

原文地址:https://www.cnblogs.com/osbreak/p/10111727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!