多态相关
- 多态=继承+重写父类的虚函数
- 多态的体现,父类的引用指向子类对象的空间
- 虚函数可以实现,也可以不实现,不实现必须要有初始值
- 存在未定义的虚函数的类为抽象类.抽象类不能实例化对象;(animal父类不能实例化对象)
- 如果父类中的函数非虚函数,则会调用父类中的函数
- //多态的体现,父类的引用指向子类的对象
代码示例:
#include <iostream>
#include <string>
using namespace std;
//多态==继承+重写父类的虚函数--1
//多态的体现,父类的引用指向子类的对象--2
class animal{
//存在未定义的虚函数的类为抽象类.抽象类不能实例化对象;
//如果以下函数非虚函数,则会调用父类中的函数
public:
//虚函数可以实现
virtual void eat(string food)
{
cout<<"animal eat" << food<<endl;
}
virtual void hi()=0;
//虚函数可以不实现,但是必须要有初始值---3,虚函数
};
class dog: public animal{
public:
void eat(string food){
cout<<"dog eat "<< food << endl;
}
void hi()
{
cout<<"wang wang"<<endl;
}
};
class cat: public animal{
public:
void eat(string food){
cout<<"cat eat "<< food << endl;
}
void hi()
{
cout<<" miao miao"<<endl;
}
};
//多态的体现,父类的引用指向子类的对象
void eat (animal &animal ,string food){
animal.eat(food);
}
int main()
{
cat cat1;
dog dog1;
eat(cat1,"fish");
eat(dog1,"meat");
dog1.hi();
animal &cat2=cat1; //多态的体现
cat2.hi();
}