派生与继承

  1. 定义一个数组类MyArray作为基类,其数据成员为int* alist,length,要有构造函数和析构函数,有数据的输入和显示功能。
  2. 定义一个派生类SortArray,实现排序功能。
  3. 定义一个派生类ReArray,实现逆转功能。
  4. 定义一个派生类AverArray,实现计算数组元素平均值的功能。
  5. 定义一个派生类NewArray,实现数组的排序、逆转、计算数组元素平均值的功能。
#include <iostream>
using namespace std;

class MyArray
{
protected:	
	int length;
	int * alist;
public:
	MyArry()
	{
		length=0;
		alist=NULL;
	}
	~MyArray()
	{
		if(alist!=NULL)
		delete [] alist;
	}
	void input()
	{
		cin>>length;
		alist=new int[length];
		for(int i=0;i<length;i++)
		cin>>alist[i];
	}
	void output()
	{
		for(int i=0;i<length;i++)
		cout<<alist[i]<<" ";
		cout<<endl;
	}
};

class SortArray:virtual public MyArray
{
public:
	void sort()
	{
		for(int i=0;i<length-1;i++)
	        for(int j=0;j<length-1-i;j++)
	            if(alist[j]>alist[j+1])
	            {
	            	int t=alist[j];
	            	alist[j]=alist[j+1];
	            	alist[j+1]=t;
				}
	}
};
class ReArray:virtual public MyArray
{
public:
	void change()
	{
		int t;
		for(int i=0;i<length/2;i++)
		{
			t=alist[i];
			alist[i]=alist[length-1-i];
			alist[length-1-i]=t;
		}
	}
};
class AverArray:virtual public MyArray
{
public:
	void aver()
	{
	int s=0;
	for(int i=0;i<length;i++)
		s=s+alist[i];
	cout<<s/length<<endl;
	}
};
class NewArray:public SortArray,public ReArray,public AverArray{};
int main() 
{
	cout<<"1--------:"<<endl; 
	SortArray m;
	m.input();
	m.sort();
	m.output();
	cout<<"2--------:"<<endl; 
	ReArray n;
	n.input();
	n.change();
	n.output();
	cout<<"3--------:"<<endl; 
    AverArray x;
    x.input();
    x.aver();
    cout<<"4--------:"<<endl; 
    NewArray y;
    y.input();
    y.sort();
    y.output();
    y.change();
    y.output();
    y.aver();
	return 0;
} 

结果:
在这里插入图片描述
注:派生类从基类接收成员(不包括构造函数和析构函数),并增加成员,实现对对基类功能的扩展,派生类可以使用基类的public成员和protected成员,但private成员不能直接使用。多重继承时为避免二义性,应当采用虚拟继承,消除派生类成员的名字冲突。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值