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