当前位置:网站首页>The difference between deep copy and shallow copy

The difference between deep copy and shallow copy

2022-04-23 18:03:00 OceanKeeper1215

The default copy structure can complete the simple assignment of the data members of the object , This is a shallow copy .

When the data resource of the object is the heap pointed to by the pointer , The default copy constructor simply copies the pointer .

But then released , Will be released twice , That is, the same memory address is released twice , There will be mistakes .

Deep copy means , The programmer writes a copy of the structure himself , When calling the copy construct , The compiler preferentially calls the programmer's handwritten copy to construct , The programmer writes in a copy of , You can open up a separate memory space to store data , This is the deep copy .

class Test
{
private:
    int* p;
public:
    Test(int x)
    {
        this->p=new int(x);
        cout << " Object created " << endl;
    }
    ~Test()
    {
        if (p != NULL)
        {
            delete p;
        }
        cout << " Object is released " << endl;
    }
    int getX() { return *p; }
    // Deep copy ( copy constructor )
    Test(const Test& a)
    {
        this->p = new int(*a.p);
        cout << " Object created " << endl;
    }
    // Shallow copy ( copy constructor )
    //Test(const Test& a)
    //{
    //  this->p = a.p;
    //  cout << " Object created " << endl;
    //}
};

int main()
{
    Test a(10);
    // We manually write the copy constructor ,C++ The compiler will call what we wrote manually 
    Test b = a;
    return 0;
}

版权声明
本文为[OceanKeeper1215]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230545105131.html