一.多态分类及动态多态实现条件
先抛开严格的定义,所谓多态,顾名思义,就是多种形态。
多态分为两类:1.静态多态:函数重载和运算符重载
2.动态多态:派生类和虚函数实现运行时多态
动态多态实现有如下条件:1.类间存在继承关系
2.子类重写父类虚函数
3.父类引用或指针指向子类对象
二.源码
#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();
}
int main() {
// 实例化猫对象
Cat cat;
// 猫对象调用doSpeak函数
doSpeak(&cat);
// 实例化狗对象
Dog dog;
// 狗对象调用doSpeak函数
doSpeak(&dog);
retu