深入理解虚函数
什么是虚函数
我们知道面向对象有三大特性,封装、继承、多态,封装和继承就不多说了,大家比较常用,即使你是写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()
}
这样写,肯定不行吧,也太初级了,一定会被领导喷死吧。
那么,要怎么改呢?
就要引入一个叫虚函数的东西。
class Animal
{
}
/* 给我叫 */
Jiao(Animal *animal)
{
animal->jiao();
}
class Cat: public Animal
{
}
class Dog: public Animal
{
}
Animal *myPet;
Cat cat
myPet = &cat;
标签:函数,animal,多态,Cat,理解,深入,Animal,cat
From: https://www.cnblogs.com/cleardo/p/17869661.html