定义一个PartFilledArray类,并为这个类实现成员函数addValue(用于向数组中添加一个数)、拷贝构造函数、析构函数的定义,以及重载<<运算符。该类的对象用于表示一个部分填充的数组 。成员变量number_used包含了目前实际填充的数组的位置数。例如,一个大小为8的数组,若实际存储了3个数,则a指向这个数组,max_number的值为8,number_used的值为3。 在主函数中创建一个PartFilledArray类的对象a,依次输入若干个数,以0作为输入结束,如果输入数字的个数小于max_number,则将这些数字输出,输出以空格分割,最后一个数字后也有空格。如果输入数字的个数大于max_number,则提示“Adding to a full array.”
时间: 2023-11-28 13:51:11 浏览: 54
下面是PartFilledArray类的实现:
```c++
#include <iostream>
using namespace std;
class PartFilledArray {
private:
int* a;
int max_number;
int number_used;
public:
// 构造函数
PartFilledArray(int size) {
a = new int[size];
max_number = size;
number_used = 0;
}
// 拷贝构造函数
PartFilledArray(const PartFilledArray& arr) {
max_number = arr.max_number;
number_used = arr.number_used;
a = new int[max_number];
for (int i = 0; i < number_used; i++) {
a[i] = arr.a[i];
}
}
// 析构函数
~PartFilledArray() {
delete[] a;
}
// 添加元素
void addValue(int value) {
if (number_used < max_number) {
a[number_used++] = value;
}
}
// 重载<<运算符
friend ostream& operator<<(ostream& os, const PartFilledArray& arr) {
for (int i = 0; i < arr.number_used; i++) {
os << arr.a[i] << " ";
}
return os;
}
};
int main() {
const int MAX_NUMBER = 8;
PartFilledArray a(MAX_NUMBER);
int value;
int count = 0;
while (count < MAX_NUMBER && cin >> value && value != 0) {
a.addValue(value);
count++;
}
if (count < MAX_NUMBER) {
cout << a;
} else {
cout << "Adding to a full array." << endl;
}
return 0;
}
```
在主函数中,我们首先定义了一个大小为8的PartFilledArray对象a。接下来使用while循环读入若干个数,并调用addValue函数将这些数添加到a中。如果输入数字的个数小于max_number,则直接输出a;否则输出“Adding to a full array.”提示信息。最后返回0表示程序正常结束。
阅读全文