#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
//动态多态使用条件
//有继承关系
//子类重写父类虚函数
class Animal
{
public:
//虚函数
//使用虚函数,函数地址不提前绑定,在运行才绑定
virtual void speak()
{
cout << "动物说话" << endl;
}
};
class Cat : public Animal
{
public:
//重写函数,名称,参数列表,返回值完全相同
void speak()
{
cout << "小猫说话" << endl;
}
};
class Dog : public Animal
{
public:
//重写函数,名称,参数列表,返回值完全相同
void speak()
{
cout << "小狗说话" << endl;
}
};
void Dospeak(Animal& animal)
{
animal.speak();
}
void test01()
{
//动态多态使用
//父类指针或引用指向子类对象 Animal& animal = cat;
Cat cat;
Dospeak(cat);
}
int main()
{
test01();
return 0;
}