实验四 继承与派生讲解学习

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四继承与派生

实验四派生类与继承

【实验类型】验证性实验【实验课时】2学时

【实验目的】

(1)理解类的继承的概念,能够定义和使用类的继承关系。

(2)掌握派生类的声明与定义方法。

(3)熟悉公有派生和私有派生的访问特性。

(4)学习虚基类在解决二义性问题中的作用。

【实验环境】

硬件:计算机

软件:Microsoft Visual C++ 6.0

【实验内容】

1、按要求阅读、编写、调试和运行以下程序。

(1)实验内容

①定义一个基类MyArray,基类中可以存放一组整数。

class MyArray

{public:

MyArray(int leng);

~MyArray();

void Input();

void Display();

protected:

long int *alist; // 指向动态申请的一组空间

int length;}; // 整数的个数

基类中有构造函数、析构函数、输入数据和输出数据的函数。

②定义一个类SortArray继承自MyArray ,在该类中定义函数实现排序功能。

③定义一个类ReArray继承自MyArray ,在该类中定义函数实现逆转功能。

④定义一个类AverArray继承自MyArray ,在该类中定义函数Aver求解整数的平均值。

⑤定义NewArray类,同时继承了SortArray, ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转、和求平均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用。

(2)实验程序 (参考)

程序如下:

#include "iostream.h"

#include "process.h"

class MyArray

{public:

MyArray(int leng);

~MyArray();

void Input();

void Display();

protected:

long int *alist; // 指向动态申请的一组空间

int length; // 整数的个数

};

MyArray::MyArray(int leng)

{ length=leng;

alist=new long int[length];

if(alist==NULL)

{

cout<<"对不起,创建失败。请重试。

";exit(1);

}

}

MyArray::~MyArray()

{

delete[] alist;

cout<<"数组被清空。"<

}

void MyArray::Display() // 显示数组内容

{

int i;

long int *p=alist;

for (i=0;i

cout<<" "<<*p;

}

void MyArray::Input() // 从键盘若干整数{

cout<<"请输入:"<

int i;

long int *p=alist;

for(i=0;i

cin>>*p;

}

class SortArray: virtual public MyArray

{

private:

int len;

long int *sp;

public:

SortArray(int leng):MyArray(leng)

{

len=leng;

Sort();

};

void Sort()

{

sp=new long int[len];

long int q;

sp=alist;

for(int i=0;i

{

for(int j=0;j

{

if(*(sp+j)>*(sp+j+1))

{

q=*(sp+j);

*(sp+j)=*(sp+j+1);

*(sp+j+1)=q;

}

}

}

}

};

class ReArray: virtual public MyArray {

// 这里是虚基类,

public:

void Reverse()

{

rp=new long int[len];

long int q;

rp=alist;

for(int i=0;i

{

q=*(rp+i);

*(rp+i)=*(rp+len-i-1);

*(rp+len-i-1)=q;

}

}

ReArray(int leng):MyArray(leng)

{

len=leng;

Reverse();

}

private:

int len;

long int *rp;

};

class AverArray:virtual public MyArray

{ // 这里是虚基类,

public:

double Aver()

{

ap=new long int[len];

double q=0;

ap=alist;

相关文档
最新文档