多态的关键是: **虚函数

    在C++中,修饰虚函数的关键字是
    virtual **_

    1. #include <iostream>
    2. using namespace std;
    3. class Animal{
    4. virtual void speak(){
    5. cout << "Animal is speaking" << endl;
    6. return;
    7. }
    8. };
    9. class Cat:public Animal{
    10. void speak(){
    11. cout << "Cat is speaking << endl;
    12. return;
    13. }
    14. };
    15. void doSpeak(Anmial& animal){
    16. animal.speak();
    17. }
    18. int main(){
    19. Cat cat;
    20. doSpeak(cat);
    21. return 0;
    22. }

    虚函数的底层逻辑
    1、没有加关键字virtual的类占据的空间为1(相当于一个空类)
    2、加了virtual的类占据的空间大小为4(其中生成了一个指针,该指针为vtfpr,**virtual function pointer**)

    image.png