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

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

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

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

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

相关推荐
DogDaoDao11 天前
C++核心技术深度剖析:从底层原理到工程实践
开发语言·c++·面试·程序员·指针·虚函数
少司府23 天前
C++进阶:多态
c语言·开发语言·c++·多态·抽象类·虚函数·虚表指针
阿昭L1 个月前
虚表hook
hook·逆向工程·虚函数
炘爚2 个月前
深入解析C++多态:虚函数与动态联编
开发语言·c++·多态·虚函数
代码中介商2 个月前
C++运行时多态深度解析:从原理到实践
开发语言·c++·多态·虚函数
消失的旧时光-19433 个月前
C++ 多态核心三件套:虚函数、纯虚函数、虚析构函数(面试 + 工程完全指南)
开发语言·c++·面试·虚函数·纯虚函数·虚析构函数
三月微暖寻春笋4 个月前
【和春笋一起学C++】(六十一)公有继承中的多态
c++·多态·virtual·基类·虚函数·公有继承
Arnold-FY-Chen5 个月前
C++纯虚基类和类的静态成员未定义引起的链接问题
c++·虚函数·纯虚类·类静态成员
bkspiderx6 个月前
C++多态:面向对象编程的核心机制
c++·多态·函数重载·回调函数·运算符重载·虚函数·纯虚函数
冉佳驹6 个月前
C++ ——— 深入解析多态从语法到底层实现的完整知识体系
c++·多态·抽象类·虚函数·虚函数表