永发信息网

c++的一个简单问题!!!

答案:2  悬赏:30  手机版
解决时间 2021-06-03 09:52
  • 提问者网友:精神病院里
  • 2021-06-02 18:16
#include<iostream>
using namespace std;
class Human
{
public:
virtual void run()=0;
virtual void eat()=0;
};
class Mother:public Human
{
public:
void run(){cout<<"母亲跑百米要花二十秒\n";}
void eat(){cout<<"母亲喜欢吃零食\n";}
};
class Father:public Human
{
public:
void run(){cout<<"父亲跑百米要花十秒\n";}
void eat(){cout<<"父亲不喜欢吃零食\n";}
};
class Uncle:public Human
{
public:
void run(){cout<<"舅舅跑百米要花十五秒\n";}
void eat(){cout<<"舅舅喜欢偷吃零食\n";}
};
int main()
{
void (Human::*pf)()=0; //为什么要在这里把它声明为纯虚函数?对下面有什么作用????请高手指点!!!!
Human*p=0;
char choice1,choice2;
bool quit=false;
while(quit==false)
{
cout<<"(0)退出(1)母亲(2)父亲(3)舅舅:";
cin>>choice1;
switch(choice1)
{
case '0':quit=true;break;
case '1':p=new Mother;break;
case '2':p=new Father;break;
case '3':p=new Uncle;break;
default:choice1='q';break;
}
if(quit)
{
break;
}
if(choice1=='q')
{
cout<<"请输入0到3之间的数字\n";
continue;
}
cout<<"(1)跑步(2)进食\n";
cin>>choice2;
switch(choice2)
{
case '1':pf=&Human::run;break;
case '2':pf=&Human::eat;break;
default:break;
}
(p->*pf)();
delete p;
}
}
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-06-02 18:55
- -||
void (Human::*pf)()=0;这个是声明一个Human类的成员函数指针,并赋值为0
不是什么纯虚函数。。
全部回答
  • 1楼网友:duile
  • 2021-06-02 19:36
虚函数才能体现函数的多态性 对于用不同子类初始化的父类指针 调用 run函数有不同的结果 要明白这个问题不难 你把virtual去掉再运行观察结果就知道了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯