浅拷贝:浅拷贝只是拷贝了对象的引用,而不是对象本身。因此,修改拷贝后的对象会影响到原对象。
深拷贝:深拷贝拷贝了对象本身,而不是对象的引用。因此,修改拷贝后的对象不会影响到原对象。
浅拷贝演示代码
class Object {
public:
Object(int A)
{
a = A;
}
int a;
};
int main()
{
Object* a = new Object(1);
Object* b(a);
cout << b->a << endl;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6e4b2b636adf2d41c56dd0a2858cb87b.png)
为啥会有深拷贝演示代码
class Test
{
public:
private:
};
class Object {
public:
Object(int A)
{
a = A;
test1 = new Test();
}
~Object()
{
if (test1)
{
delete test1;
test1 = nullptr;
}
}
int a;
Test* test1;
};
int main()
{
Object* a = new Object(1);
Object* b(a);
delete a;
delete b;
}
为深拷贝演示代码
class Test
{
public:
private:
};
class Object {
public:
Object()
{
}
Object(int A)
{
a = A;
test1 = new Test();
}
Object(const Object* test)
{
this->a = test->a;
this->test1 = new Test();
*this->test1 = *test->test1;
}
~Object()
{
if (test1)
{
delete test1;
test1 = nullptr;
}
}
int a;
Test* test1;
};
int main()
{
Object* a = new Object(2);
Object* b = new Object(a);
delete a;
delete b;
return 0;
}