什么时候有多态?下面有个程序!结合这个程序帮我解释一下!在线等待~!

来源:百度知道 编辑:UC知道 时间:2024/07/02 13:06:19
#include<iostream>
using namespace std;
class a
{
public:
virtual void fun1(){cout<<"a fun1"<<endl;}
virtual void fun2(){cout<<"a fun2"<<endl;}
void fun3(){cout<<"a fun3"<<endl;}
void fun4(){cout<<"a fun4"<<endl;}
};
class b:public a
{
public:
virtual void fun1(){cout<<"b fun1"<<endl;}
virtual void fun2(int x){cout<<"b fun2"<<endl;}
virtual void fun3(){cout<<"b fun3"<<endl;}
void fun4(){cout<<"b fun4"<<endl;}
};
void main()
{
a *p;
b B;
p=&B;
p->fun1();
p->fun2();
p->fun3();
p->fun4();
}
在这当中,p->fun1();
p->fun2();
p->fun3();
p->fun4();
这四句中哪一句有多态!那么当有多态的时候输出是不是按照子类函数来输出结果呢?麻烦高人指点了~~~~!!!!!

p->fun1();
p->fun2();
这两句有多态,
因为class b中只对fun1(),fun2()进行了覆盖 而class b中的fun3()并没有重载基类的函数.所以只有,p->fun1(); p->fun2(); 有多态.

virtual void fun2(int x){cout<<"b fun2"<<endl;}
对不起这句我看错了
没有看见有参数