C++基础 -15- 拷贝构造(深度拷贝)
———————拷贝构造———————
🎈由于系统的浅拷贝就是直接赋值
🎈所以可能出现共用内存空间的情况
🎈如下图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———————

浙公网安备 33010602011771号