———————拷贝构造———————
?由于系统的浅拷贝就是直接赋值
?所以可能出现共用内存空间的情况
?如下图newperson通过浅拷贝创建出来
?改变newperson的参数影响到了person类
#include "iostream" using namespace std; extern "C" { #include "string.h" } class base { public: base(char const *name) { addr = new char[1024]; strcpy(addr, name); } void show() { cout << addr << endl; } void setname(const char *name) { strcpy(addr, name); } private: char *addr; }; int main() { base person("rlxy"); person.show(); base newperson = person; newperson.setname("xyrl"); person.show(); }
?深拷贝解决问题
?观察结构则不再影响
#include "iostream" using namespace std; extern "C" { #include "string.h" } class base { public: base(char const *name) { addr = new char[1024]; strcpy(addr, name); } base(base &a) { char *addr = new char[1024]; strcpy(addr, a.addr); } void show() { cout << addr << endl; } void setname(const char *name) { strcpy(addr, name); } private: char *addr; }; int main() { base person("rlxy"); person.show(); base newperson = person; newperson.setname("xyrl"); person.show(); }
———————End———————