深、浅拷贝构造函数

来源:互联网 发布:快速移动文件软件 编辑:程序博客网 时间:2024/06/04 18:55


#include<iostream>using namespace std;class Array{public://构造函数Array(int sz):_sz(sz), _ptr(new int[_sz]){cout << "Array" << endl;}////浅拷贝构造函数            //类成员变量有动态开辟,然后p1._str和p2._str指向同一段空间//Array(const Array& cp)      //调用两次析构函数,就会把_ptr里的空间重复释放,所以这里使用普通的拷贝方法行不通//{//_sz = cp._sz;//_ptr = cp._ptr;//}//深拷贝构造函数Array(const Array& cp)      //必须使用这种方法进行拷贝,给this->_ptr动态开辟一段空间,在给其赋值:_sz(cp._sz)            //这样分布调用两次析构函数时,p1和p2各释放各的一段空间, _ptr(new int[_sz]){cout << "Array(const Array& cp)" << endl;}~Array(){if (_ptr != NULL){delete[] _ptr;}cout << "~Array" << endl;}private:int _sz;int *_ptr;};int main(){Array p1(5);Array p2(p1);return 0;}


0 0
原创粉丝点击