———————拷贝构造———————
?由于系统的浅拷贝就是直接赋值
?所以可能出现共用内存空间的情况
?如下图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———————