问题 E: oop实习-5.类的定义_深拷贝
题目描述:
设计并实现一个动态整型数组类Vect,要求:
(1)实现构造函数重载,可以根据指定的元素个数动态创建初始值为0的整型数组,或根据指定的内置整型数组动态创建整型数组。
(2)设计拷贝构造函数和析构函数,注意使用深拷贝。
(3)设计存取指定位置的数组元素的公有成员函数,并进行下标越界,若越界则输出“out of boundary”。
(4)设计获取数组元素个数的公有成员函数。
(5)设计用于输出数组元素的公有成员函数,元素之间以空格分隔,最后以换行符结束。
在main函数中按以下顺序操作:
(1)根据内置的静态整型数组{1,2,3,4,5}构造数组对象v1,根据输入的整型数构造数组对象v2。
(2)调用Vect的成员函数依次输出v1和v2的所有元素。
(3)输入指定的下标及对应的整型数,设置数组对象v1的指定元素。
(4)根据数组对象v1拷贝构造数组对象v3。
(5)调用Vect的成员函数依次输出v1和v3的所有元素。
输入:
用于构建数组对象v2的元素个数
用于设置数组对象v1的指定下标及元素值
输出:
数组对象v1和v2的所有元素
数组对象v1和v3的所有元素
样例输入:
10
6 6
样例输出:
1 2 3 4 5
0 0 0 0 0 0 0 0 0 0
out of boundary
1 2 3 4 5
1 2 3 4 5
参考代码:
#include <iostream>
using namespace std;
class Vert
{
public:
Vert()
{
int i;
integer = new int[5];
for(i = 0;i < 5;i++)
{
integer[i] = i+1;
}
size = 5;
}
Vert(int s)
{
int i;
integer = new int[s];
for(i = 0;i < s;i++)
integer[i] = 0;
size = s;
}
Vert(Vert & ref)//拷贝构造函数
{
int i;
integer = new int[ref.size];
size = ref.size;
for(i = 0;i < size;i++)
integer[i] = ref.integer[i];
}
int get(int pos)//获取该数组指定下标下所对应的值
{
return integer[pos];
}
void set(int pos, int setnum)//用于设置数组对象指定位置的值
{
if(pos < 0 || pos > size - 1)
{
cout << "out of boundary" << endl;
}
else
integer[pos] = setnum;
}
void disp()//显示数组
{
int i;
for(i = 0;i < size;i++)
{
if(i == size - 1)
cout << integer[i];
else
cout << integer[i] << " ";
}
cout << endl;
}
~Vert()
{
delete []integer;
integer = NULL;
}
private:
int size;
int *integer;
};
int main()
{
Vert v1;
int zero_size, pos, value;
cin >> zero_size;
cin >> pos >> value;
v1.disp();
Vert v2(zero_size);
v2.disp();
v1.set(pos, value);
Vert v3(v1);
v1.disp();
v3.disp();
return 0;
}
水平有限,如有错误,欢迎评论区指正ψ(._. )>
(睡了睡了,晚安欧)