定义一个基类myarray,基类中可以存放一组整数。基类中有构造函数、析构函数、输入数据和输出数据的函数且定义一个类sortarray继承自myarray,在该类中定义函数实现从大到小的排序功能。输入数据元素的个数n和n个整数,输出排序后的n个数。
时间: 2023-06-27 07:06:04 浏览: 267
下面是基类 `myarray` 和继承类 `sortarray` 的代码实现:
```c++
#include <iostream>
using namespace std;
class myarray {
protected:
int* data; // 存放整数的数组
int size; // 数组大小
public:
// 构造函数
myarray(int n) {
size = n;
data = new int[size];
}
// 析构函数
~myarray() {
delete[] data;
}
// 输入数据函数
virtual void input() {
cout << "请输入 " << size << " 个整数:" << endl;
for (int i = 0; i < size; i++) {
cin >> data[i];
}
}
// 输出数据函数
virtual void output() {
cout << "输出数据:" << endl;
for (int i = 0; i < size; i++) {
cout << data[i] << " ";
}
cout << endl;
}
};
class sortarray : public myarray {
public:
// 继承基类的构造函数
sortarray(int n) : myarray(n) {}
// 实现从大到小排序的函数
void sort_desc() {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (data[i] < data[j]) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
// 重写基类的输出数据函数
void output() {
cout << "从大到小排序后的数据:" << endl;
sort_desc(); // 排序
for (int i = 0; i < size; i++) {
cout << data[i] << " ";
}
cout << endl;
}
};
int main() {
int n;
cout << "请输入数组大小:";
cin >> n;
sortarray a(n);
a.input();
a.output();
return 0;
}
```
这段代码定义了一个基类 `myarray`,其中有构造函数、析构函数、输入数据和输出数据的函数。这个类里面只定义了虚函数,而没有对 `input()` 和 `output()` 函数进行具体实现,因为这些函数的具体实现需要在继承类中进行。
继承类 `sortarray` 继承了基类 `myarray`,并实现了从大到小排序的功能。在继承类中重写了基类 `output()` 函数,先对数据进行排序,再输出排序后的结果。
在 `main()` 函数中,先输入数组大小,然后创建一个 `sortarray` 对象,并通过该对象的 `input()` 和 `output()` 函数分别输入和输出数据。
阅读全文