本次实验要求掌握派生类的声明方法和派生类构造函数的定义方法;掌握不同方法下,构造函数与析构函数的执行顺序与构造规则。
代码如下:
#include#include using namespace std; class MyArray { public: MyArray(int length); ~MyArray(); void Input(); void Display(string); protected: int* alist; int length; }; MyArray::MyArray(int leng) { length = leng; if (leng <= 0) { cout << "error length"; exit(1); } alist = new int[length]; length = leng; if (alist == NULL) { cout << "assign failure"; exit(1); } cout << "MyArray类对象已创建!" << endl; } MyArray::~MyArray() { delete[] alist; cout << "MyArray类对象已撤销!" << endl; } void MyArray::Display(string str) { int i; int* p = alist; cout << str << length << "个整数:"; for (i = 0; i < length; i++, p++) cout << *p << " "; cout << endl; } void MyArray::Input() { cout << "请从键盘输入" << length << "个整数:"; int i; int* p = alist; for (i = 0; i < length; i++, p++) cin >> *p; } class SortArray : public MyArray { public: void Sort(); SortArray(int leng) :MyArray(leng) { cout << "SortArray已创建" << endl; } ~SortArray(); }; SortArray::~SortArray() { cout << "SortArray已撤销" << endl; } void SortArray::Sort() { int i, j, a; for (i = 0; i < length - 1; i++) for (j = 0; j < length - 1; j++) { if (alist[j] > alist[j + 1]) { a = alist[j]; alist[j] = alist[j + 1]; alist[j + 1] = a; } } } int main() { SortArray s(5); s.Input(); s.Display("排序以前"); s.Sort(); s.Display("排序以后"); return 0; }
实验运行结果如下:
心得: 本次实验学习了派生类的声明方法和派生类构造函数的定义方法,并通过编写程序来验证实验目的,编写了MyArray类的一个子类SortArray来实现对输入数据的排序。实验中运用了冒泡排序法来进行实验,实现了数据排序功能。
构造函数的调用顺序:基类构造函数、对象成员构造函数、派生类本身的构造函数
析构函数的调用顺序:派生类本身的析构函数、对象成员析构函数、基类析构函数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)