设计一个动态整型数组类 CArray ,并对CArray类进行测试 数据成员: int *vec; // 动态数组指针 int size; //动态数组规模 成员函数:public CArray(int n); // 构造函数,构造规模为n的数组 CArray (CArray &arr); //拷贝构造函数 ~CArray(); //析构函数,释放动态数组空间 int length(); // 取数组元素个数 int get(int i); // 取数组第i个元素 void set(int i, int value); // 设置数组第i个元素 int getMax(); // 取数组最大元素 int getMin(); // 取数组最大元素 void print(); //输出动态数组的所有元素 int & operator[](int); CArray & operator=( const CArray &arr);
时间: 2023-06-17 17:08:20 浏览: 111
下面是 CArray 类的实现:
```c++
#include <iostream>
using namespace std;
class CArray {
private:
int *vec; // 动态数组指针
int size; // 动态数组规模
public:
CArray(int n) { // 构造函数,构造规模为n的数组
vec = new int[n];
size = n;
}
CArray(CArray &arr) { // 拷贝构造函数
size = arr.size;
vec = new int[size];
for (int i = 0; i < size; i++) {
vec[i] = arr.vec[i];
}
}
~CArray() { // 析构函数,释放动态数组空间
delete[] vec;
}
int length() { // 取数组元素个数
return size;
}
int get(int i) { // 取数组第i个元素
return vec[i];
}
void set(int i, int value) { // 设置数组第i个元素
vec[i] = value;
}
int getMax() { // 取数组最大元素
int max = vec[0];
for (int i = 1; i < size; i++) {
if (vec[i] > max) {
max = vec[i];
}
}
return max;
}
int getMin() { // 取数组最小元素
int min = vec[0];
for (int i = 1; i < size; i++) {
if (vec[i] < min) {
min = vec[i];
}
}
return min;
}
void print() { // 输出动态数组的所有元素
for (int i = 0; i < size; i++) {
cout << vec[i] << " ";
}
cout << endl;
}
int& operator[](int i) { // 重载 [] 运算符
return vec[i];
}
CArray& operator=(const CArray &arr) { // 重载 = 运算符
if (vec == arr.vec) { // 防止自我赋值
return *this;
}
delete[] vec; // 释放原有空间
size = arr.size;
vec = new int[size]; // 分配新空间
for (int i = 0; i < size; i++) { // 复制元素
vec[i] = arr.vec[i];
}
return *this;
}
};
```
测试代码:
```c++
int main() {
CArray a(5);
for (int i = 0; i < a.length(); i++) {
a[i] = i + 1;
}
a.print(); // 1 2 3 4 5
CArray b(a);
b.print(); // 1 2 3 4 5
CArray c(3);
c = a;
c.print(); // 1 2 3
cout << a.getMax() << endl; // 5
cout << a.getMin() << endl; // 1
return 0;
}
```
相关推荐
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)