小白求助,多态和虚拟函数部分问题
补充代码,设计三个复读机类和一个普通函数,具体要求如下:复读机类( Repeater )
它有一个成员函数 Play,在这里它什么也不做。它还有一个析构函数,它被调用时会输出一行 砰!。
正向复读机类( ForRepeater )
继承 Repeater 类并重写 Play 函数,输出没想到你也是一个复读机且在析构函数中输出 正·复读机 炸了。
反向复读机类( RevRepeater )
继承 Repeater 类也重写 Play 函数,输出机读复个一是也你到想没且在析构函数中输出 机读复·反 炸了。
普通函数:Repeater* CreateRepeater(int type),函数根据 type 的值,动态创建不同的复读机对象,并返回它的指针。其中当type = 0,创建 ForRepeater 对象;type = 1,创建 RevRepeater 对象;其他则返回 0。
#include <iostream>
using namespace std;
class Repeater
{
//复读机基类的声明
};
//复读机基类的定义
class ForRepeater : public Repeater
{
//正向复读机的声明
};
//正向复读机的定义
class RevRepeater : public Repeater
{
//反向复读机的声明
};
//反向复读机的定义
//普通函数
Repeater* CreateRepeater(int type)
{
//根据type创建指定的复读机
}
/********* End *********/
//main函数不允许修改
int main()
{
int i;
cin >> i;
Repeater *ptr = CreateRepeater(i);
ptr->Play();
delete ptr;
}
我是这样写的 #include <iostream>
using namespace std;
/********* Begin *********/
class Repeater
{
//复读机基类的声明
public:
virtual void Play()=0;
virtual ~ Repeater()
{ cout << "砰!" << endl; }
};
//复读机基类的定义
class ForRepeater : public Repeater
{
//正向复读机的声明
public:
void Play() override;
ForRepeater ();
~ForRepeater ();
};
//正向复读机的定义
void ForRepeater ::Play()
{cout<<"没想到你也是一个复读机" <<endl;}
ForRepeater ::~ForRepeater()
{cout<<"正·复读机 炸了"<<endl;}
class RevRepeater : public Repeater
{
//反向复读机的声明
public:
void Play() override;
RevRepeater ();
~RevRepeater ();
};
//反向复读机的定义
void RevRepeater ::Play()
{cout<<"机读复个一是也你到想没" <<endl;}
RevRepeater ::~RevRepeater()
{cout<<"机读复·反 炸了"<<endl;}
//普通函数
Repeater* CreateRepeater(int type)
{
//根据type创建指定的复读机
Repeater *p;
if(type==0)
{ p=new ForRepeater;
return p;}
else if(type==1)
{ p=new RevRepeater;
return p; }
else return 0;
}
int main()
{
int i;
cin >> i;
Repeater *ptr = CreateRepeater(i);
ptr->Play();
delete ptr;
}
我刚学没多久,不太会。感谢帮助 鞠躬!!!