【问题描述】
设计三个复读机类并实现一个普通函数。具体要求如下:
复读机类( 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++练习题,所有答案仅供同学们参考。