#include
using namespace std;
class Array
{
public:
Array(int size, int num = 0)
{
len = size;
p = new int[len]; //给数组开辟空间
for(int i = 0; i < len; i++)
{
p[i] = num;
}
cout << __func__ << ":" << __LINE__ << endl;
}
Array(const Array &obj) // 拷贝构造-- 深拷贝
{
//this->p = obj.p; //浅拷贝 -- 拷贝地址会涉及到释放同一个地址两次
len = obj.len;
p = new int[len];
for(int i = 0; i < len; i++)
{
p[i] = obj.p[i];
}
cout << __func__ << ":" << __LINE__ << endl;
}
~Array()
{
delete [] p; //释放数组资源
p = NULL;
cout << __func__ << ":" << __LINE__ << endl;
}
public:
int get_arr_num(int pos) //通过数组下标得到数组元素值
{
return p[pos];
}
void set_arr_num(int pos, int val) //通过下标修改数组元素值
{
p[pos] = val;
}
void show_arr()
{
int i = 0;
for(i = 0; i < len; i++) //循环打印每一个元素的值
{
cout << p[i] << " ";
}
cout << endl;
}
private:
int *p; //数组首地址
int len; //数组元素个数
};
int main()
{
Array arr1(5);
arr1.show_arr();
Array arr2(arr1);
arr2.show_arr();
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)