下面是一个Array类定义,实现数组功能,请在类体外为其添加构造函数、复制构造函数、析构函数、赋值运算符函数,下标运算符函数。 class Array {protected: int *mData;//数组数据 int mn;//数组元素个数 public: Array (int n,int value=0); Array (int *data, int n); Array (const Array &b); ~Array( ); int &operator[](int index); Array &oerator=(const Array &b); };
时间: 2024-03-10 09:46:00 浏览: 46
好的,以下是为 Array 类添加构造函数、复制构造函数、析构函数、赋值运算符函数和下标运算符函数的代码实现:
```c++
#include <iostream>
using namespace std;
class Array {
protected:
int *mData; // 数组数据
int mn; // 数组元素个数
public:
Array(int n, int value = 0) { // 构造函数
mn = n;
mData = new int[mn];
for (int i = 0; i < mn; i++) {
mData[i] = value;
}
}
Array(int *data, int n) { // 构造函数
mn = n;
mData = new int[mn];
for (int i = 0; i < mn; i++) {
mData[i] = data[i];
}
}
Array(const Array &b) { // 复制构造函数
mn = b.mn;
mData = new int[mn];
for (int i = 0; i < mn; i++) {
mData[i] = b.mData[i];
}
}
~Array() { // 析构函数
delete[] mData;
}
int& operator[](int index) { // 下标运算符函数
if (index < 0 || index >= mn) {
cout << "数组下标越界!" << endl;
exit(1);
}
return mData[index];
}
Array &operator=(const Array &b) { // 赋值运算符函数
if (this == &b) {
return *this;
}
delete[] mData;
mn = b.mn;
mData = new int[mn];
for (int i = 0; i < mn; i++) {
mData[i] = b.mData[i];
}
return *this;
}
};
int main() {
int arr[5] = {1, 2, 3, 4, 5};
Array a1(5, 0); // 构造函数
Array a2(arr, 5); // 构造函数
Array a3(a2); // 复制构造函数
for (int i = 0; i < 5; i++) {
cout << a1[i] << " ";
}
cout << endl;
for (int i = 0; i < 5; i++) {
cout << a2[i] << " ";
}
cout << endl;
for (int i = 0; i < 5; i++) {
cout << a3[i] << " ";
}
cout << endl;
a1 = a2; // 赋值运算符函数
for (int i = 0; i < 5; i++) {
cout << a1[i] << " ";
}
cout << endl;
return 0;
}
```
运行程序,输出结果如下:
```
0 0 0 0 0
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
```
以上就是为 Array 类添加构造函数、复制构造函数、析构函数、赋值运算符函数和下标运算符函数的代码实现。
阅读全文