动态多态满足条件
1、有继承关系
2、子类重写父类虚函数
动态多态使用
PS:
参数利用父类的指针或者引用 指向子类对象
#include<iostream>
using namespace std;
//食物类
class Food
{
public:
//虚函数
virtual void size()
{
cout<<"the size of this fruit: "<<endl;
}
};
//加关键字 virtual 变成虚继承; Food 变为 虚基类
//草莓类
class stby: public Food
{
public:
//重写父类虚函数:函数返回值 函数名 参数列表 完全相同
void size()
{
cout<<"the size of this stby: "<<endl;
}
};
//未加 virtual 时,地址早绑定,在编译阶段确定函数地址
//如果想执行子类同名函数,那么久不能让函数地址提前绑定,需要在运行阶段绑定,即地址晚绑定 用virtual
//动态多态满足条件
//1、有继承关系
//2、子类重写父类虚函数
//动态多态使用
//参数利用父类的指针或者引用 指向子类对象
void cutsize(Food &food)//子类可以转父类,父类不能转子类
{
food.size();
}
void test01()
{
stby stb;
cutsize(stb);
}
int main()
{
test01();
return 0;
}