C语言中如何正确运用虚函数实现多态性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1445个文字,预计阅读时间需要6分钟。
目录
一、虚函数
二、虚函数与纯虚函数的区别
三、动态多态
四、虚函数的作用和原理
五、纯虚函数与虚函数的区别
一、虚函数
首先来看下面这段代码,创建两个类Dog和Cat,并分别定义了一个虚函数makeSound。cppclass Dog {public: virtual void makeSound() { cout << 汪汪汪 < class Cat {public: virtual void makeSound() { cout << 喵喵喵 < 二、虚函数与纯虚函数的区别虚函数可以在派生类中被重写,而纯虚函数则不能。纯虚函数用于定义一个接口,要求派生类必须实现该接口。 cppclass Animal {public: virtual void makeSound()=0; // 纯虚函数}; 三、动态多态动态多态是指通过基类指针或引用调用虚函数时,会根据对象的实际类型来调用相应的函数。 cppAnimal *p=new Dog();p->makeSound(); // 输出:汪汪汪 p=new Cat();p->makeSound(); // 输出:喵喵喵 四、虚函数的作用和原理虚函数的作用是实现动态多态,原理是通过虚函数表(vtable)和虚函数指针(vptr)来实现。
本文共计1445个文字,预计阅读时间需要6分钟。
目录
一、虚函数
二、虚函数与纯虚函数的区别
三、动态多态
四、虚函数的作用和原理
五、纯虚函数与虚函数的区别
一、虚函数
首先来看下面这段代码,创建两个类Dog和Cat,并分别定义了一个虚函数makeSound。cppclass Dog {public: virtual void makeSound() { cout << 汪汪汪 < class Cat {public: virtual void makeSound() { cout << 喵喵喵 < 二、虚函数与纯虚函数的区别虚函数可以在派生类中被重写,而纯虚函数则不能。纯虚函数用于定义一个接口,要求派生类必须实现该接口。 cppclass Animal {public: virtual void makeSound()=0; // 纯虚函数}; 三、动态多态动态多态是指通过基类指针或引用调用虚函数时,会根据对象的实际类型来调用相应的函数。 cppAnimal *p=new Dog();p->makeSound(); // 输出:汪汪汪 p=new Cat();p->makeSound(); // 输出:喵喵喵 四、虚函数的作用和原理虚函数的作用是实现动态多态,原理是通过虚函数表(vtable)和虚函数指针(vptr)来实现。

