2. 实验7——类的多态性与虚函数——复读机的毁灭

【问题描述】

设计三个复读机类并实现一个普通函数。具体要求如下:

复读机类( Repeater )

它有一个成员函数 Play,在这里它什么也不做。它还有一个析构函数,它被调用时会输出一行砰!。

正向复读机类( ForRepeater )

继承 Repeater 类并重写 Play 函数,输出没想到你也是一个复读机且在析构函数中输出正·复读机 炸了。

反向复读机类( RevRepeater )

继承 Repeater 类也重写 Play 函数,输出机读复个一是也你到想没且在析构函数中输出机读复·反 炸了。

普通函数:Repeater* CreateRepeater(int type),函数根据 type 的值,动态创建不同的复读机对象,并返回它的指针。其中当type = 0,创建 ForRepeater 对象;type = 1,创建 RevRepeater 对象;

如果type为其他值,则要求再次输入,直到输入0或1。


【样例输入】

0

【样例输出】

没想到你也是一个复读机

正·复读机 炸了

砰!

【样例输入】

2

3

5

0

【样例输出】

没想到你也是一个复读机

正·复读机 炸了

砰!

#include  <iostream>
using  namespace  std;

/*********  Begin  *********/
class  Repeater
{
        //复读机基类的声明

public:
virtual void Play(){}
virtual ~Repeater();  

};
//复读机基类的定义

Repeater::~Repeater()
{
cout<<"砰!"<<endl;
}

class  ForRepeater  :  public  Repeater
{
        //正向复读机的声明

public:
void Play();
~ForRepeater();    

};
//正向复读机的定义

void ForRepeater::Play(){
cout<<"没想到你也是一个复读机"<<endl;
}
ForRepeater::~ForRepeater(){
cout<<"正·复读机 炸了"<<endl;
}

class  RevRepeater  :  public  Repeater
{
        //反向复读机的声明

public:
void Play();
~RevRepeater();  

};
//反向复读机的定义

RevRepeater::~RevRepeater(){
cout<<"机读复·反 炸了"<<endl;
}
void RevRepeater::Play(){
cout<<"机读复个一是也你到想没"<<endl;
}

//普通函数
Repeater*  CreateRepeater(int  type)
{
        //根据type创建指定的复读机

if(type==0)
    return new ForRepeater();
else if(type==1)
    return new RevRepeater();
else
{
    cin >> type;
    return  CreateRepeater(type);
}  

}

/*********  End  *********/
int  main()
{
        int  i;
        cin  >>  i;
        Repeater  *ptr  =  CreateRepeater(i);
        ptr->Play();
        delete  ptr;
}

【注】此分栏为西安理工大学C++练习题,所有答案仅供同学们参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值