//虚拟函数:在基类中被声明为virtual,而在派生类中又重新定义了这个函数
#include<iostream.h>
class base
{
public:
virtual void f1()
{
cout<<"f1 function of base"<<endl;
}
virtual void f2()
{
cout<<"f2 function of base"<<endl;
}
virtual void f3()
{
cout<<"f3 function of base"<<endl;
}
void f4()//一般成员函数
{
cout<<"f4 function of base"<<endl;
}
};
class subclass:public base
//class subclass: base
//class subclass:protected base
//class subclass:private base//error C2243: 'type cast' : conversion from 'class subclass *' to 'class base *' exists, but is inaccessible
{
public:
virtual void f1()//多态
{
cout<<"f1 function of subclass"<<endl;
}
virtual void f2(int x)//参数不同无法实现多态
//virtual void f2()
{
cout<<"f2 function of subclass"<<endl;
}
virtual void f4()//在基类中没有被声明虚函数,不能实现多态
{
cout<<"f4 function of subclass"<<endl;
}
};
void main()
{
base bc,*p;
subclass sc;
p=&bc;
p->f1();
p->f2();
p->f3();
p->f4();
p=≻
p->f1();
p->f2();
//p->f2(3);//error C2660: 'f2' : function does not take 1 parameters
p->f3();//在子类subclass中没有重载父类base在成员函数f3(),不能实现多态
p->f4();
}
虚拟函数:在基类中被声明为virtual,而在派生类中又重新定义了这个函数
最新推荐文章于 2022-06-01 17:30:53 发布