用c++定义一个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-12-15 17:07:31 浏览: 87
以下是PartFilledArray类的定义和成员函数的实现:
```cpp
#include <iostream>
using namespace std;
class PartFilledArray {
private:
int *a;
int max_number;
int number_used;
public:
PartFilledArray(int n) {
a = new int[n];
max_number = n;
number_used = 0;
}
PartFilledArray(const PartFilledArray& other) {
max_number = other.max_number;
number_used = other.number_used;
a = new int[max_number];
for (int i = 0; i < number_used; i++) {
a[i] = other.a[i];
}
}
~PartFilledArray() {
delete[] a;
}
void addValue(int value) {
if (number_used < max_number) {
a[number_used] = value;
number_used++;
}
}
friend ostream& operator<<(ostream& os, const PartFilledArray& array) {
for (int i = 0; i < array.number_used; i++) {
os << array.a[i] << " ";
}
return os;
}
};
```
在主函数中,可以这样使用PartFilledArray类:
```cpp
int main() {
const int MAX_NUMBER = 8;
PartFilledArray a(MAX_NUMBER);
int count = 0;
int value;
while (count < MAX_NUMBER && cin >> value && value != 0) {
a.addValue(value);
count++;
}
if (count < MAX_NUMBER) {
cout << a << endl;
} else {
cout << "Adding to a full array." << endl;
}
return 0;
}
```
阅读全文