虚函数深度分享

发布时间 2023-12-02 13:46:06作者: cleardo

深入理解虚函数

什么是虚函数

我们知道面向对象有三大特性,封装、继承、多态,封装和继承就不多说了,大家比较常用,即使你是写Python的也会用到,但是多态就比较复杂了,在C++里,虚函数是实现多态的一个强大的武器。

多态在一些设计模式里比较重要,如模板模式,可以多个不同的模板来呈现同一个业务,或者策略模式里,可以实现不同的策略。也包括我们常说的里氏替换原则。

要理解虚函数,我们来看一个例子,现代人喜欢养宠物,有的喜欢猫,有的喜欢狗,我开发一个小游戏,你可以养一只猫,也可以养一只狗,也可以让他叫

不管你是猫还是狗,反正就是叫,猫就会叫“喵喵喵”,狗就会叫“汪汪汪”

怎么写这个代码呢?

比较笨的就是:

enum AnimalType = {
    CAT,
    DOG
}

AnimalType animal_type;

Cat *cat = new Cat();

Dog *dog = new Dog();

if (animal_type == CAT)
{
    cat->sound()
} else if (animal_type == DOG)
{
    dog->sound()
}