[C++] 类中的虚函数

介绍

本文介绍了c++中,虚函数的原理。

正文

首先看代码1:

#include <iostream>

using namespace std;

class Animal{
public:
    // 虚函数
    void speak(){
        cout << "animal speaking " <<endl;
    }
};

class Cat: public Animal{
public:
    void speak(){
        cout << "cat speaking " <<endl;
    }
};

void do_speak(Animal *animal){
    animal->speak();
}

int main(){
    Animal a;
    cout << sizeof(a)<< endl;

    return 0;
}

打印的结果:1

如果我们把speak函数修改成,virtual void speak之后,打印的结果:4
它变成了指针

原理:

修改成代码2:

#include <iostream>

using namespace std;

class Animal{
public:
    // 虚函数
    virtual void speak(){
        cout << "animal speaking " <<endl;
    }
};

class Cat: public Animal{
public:
    virtual void speak(){
        cout << "CAT speaking " <<endl;
    }
};

void do_speak(Animal *animal){
    animal->speak();
}

int main(){
    Cat cat;
    do_speak(&cat);

    return 0;

成功。

原文地址:https://www.cnblogs.com/kykai/p/14410436.html