作业帮 > 综合 > 作业

c++ 浅拷贝和深拷贝 举例简要说明.言简意赅.

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/05/06 16:47:46
c++ 浅拷贝和深拷贝 举例简要说明.言简意赅.
c++ 浅拷贝和深拷贝 举例简要说明.言简意赅.
class Test{
public:
    
    Test(int num) : _val(new int(num)) {}
    //Test(const Test &t) : _val(new int(*(t._val))) {}
    ~Test(){ delete _val; }
    
private:
    int *_val;
};
现在定义两个对象,
Test t1(9);
Test t2(t1);
如果你不提供copy构造函数(注释掉的那个),那么t1和t2的成员_val指向同一个对象,
当析构的时候,同一个对象被析构了两次,肯定出问题了.
反之,提供了被注释的copy构造函数,t2的_val指向了一个新对象,这样程序就没问题了.
前者就是潜拷贝,后者就是深拷贝.