虚函数机制-动态绑定的应用

虚函数使得程序在运行的时候根据指针指向对象的类型来确定调用哪个函数。

下图中:都为静态绑定。因为在编译器就确定了可以调用的函数

此时当基类指针指向派生类对象时,因为没有virtual关键字,所以在编译阶段就根据指针类型确定了要指向的函数。所以最后都将调用基类的speak函数

而在基类中的speak函数中加入virtual,在编译阶段,当看到virtual关键字时不再立刻进行绑定,而是在运行阶段根据对象所指的类型来确定调用哪个函数,加入virtual关键字后子类调用结果都为重写后的结果。

相关推荐
Bshaya_2 天前
C++多态详解:运行时多态、虚函数重写与析构函数重写规则
多态·析构函数·虚函数·重写·静态多态
白杨尚青13 天前
C++进阶篇(二):多态——虚函数、重写、虚函数表与三个经典坑(附完整代码仓库)
开发语言·c++·多态·虚函数·重写·动态绑定
布莱克6051 个月前
在C++中,构造函数能不能是虚函数?析构函数为什么要虚?
开发语言·c++·构造函数·析构函数·虚函数
DogDaoDao5 个月前
C++核心技术深度剖析:从底层原理到工程实践
开发语言·c++·面试·程序员·指针·虚函数
少司府5 个月前
C++进阶:多态
c语言·开发语言·c++·多态·抽象类·虚函数·虚表指针
阿昭L5 个月前
虚表hook
hook·逆向工程·虚函数
炘爚6 个月前
深入解析C++多态:虚函数与动态联编
开发语言·c++·多态·虚函数
代码中介商6 个月前
C++运行时多态深度解析:从原理到实践
开发语言·c++·多态·虚函数
消失的旧时光-19437 个月前
C++ 多态核心三件套:虚函数、纯虚函数、虚析构函数(面试 + 工程完全指南)
开发语言·c++·面试·虚函数·纯虚函数·虚析构函数
三月微暖寻春笋8 个月前
【和春笋一起学C++】(六十一)公有继承中的多态
c++·多态·virtual·基类·虚函数·公有继承