多态的关键是: **虚函数
在C++中,修饰虚函数的关键字是 virtual **_
#include <iostream>
using namespace std;
class Animal{
virtual void speak(){
cout << "Animal is speaking" << endl;
return;
}
};
class Cat:public Animal{
void speak(){
cout << "Cat is speaking << endl;
return;
}
};
void doSpeak(Anmial& animal){
animal.speak();
}
int main(){
Cat cat;
doSpeak(cat);
return 0;
}
虚函数的底层逻辑
1、没有加关键字virtual的类占据的空间为1(相当于一个空类)
2、加了virtual的类占据的空间大小为4(其中生成了一个指针,该指针为vtfpr,**virtual function pointer**)