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

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

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

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

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

相关推荐
Trouvaille ~1 个月前
【C++篇】虚境探微:多态的流动诗篇,解锁动态的艺术密码
c++·面试·性能优化·多态·面向对象编程·代码优化·虚函数
BLR.cpp4 个月前
c++如何理解多态与虚函数
多态·虚函数·c++虚函数·c++多态·编译时多态·运行时多态·父类指针调用虚函数
阮春义6 个月前
C++ Virtual Functions
虚函数·polymorphic class
菠菠萝宝8 个月前
C++程序设计-第六/七/八章 运算符重载/包含与继承/虚函数和多态性【期末复习|考研复习】
开发语言·c++·考研·继承·期末复习·虚函数·重载
丶布布1 年前
[C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
开发语言·c++·虚函数·纯虚函数·虚析构
你好,冯同学1 年前
虚函数表和虚函数在内存中的位置
虚函数·虚函数表·虚函数表和虚函数在内存中的位置
韩曙亮1 年前
【C++】多态 ③ ( “ 多态 “ 实现需要满足的三个条件 | “ 多态 “ 的应用场景 | “ 多态 “ 的思想 | “ 多态 “ 代码示例 )
开发语言·c++·多态·virtual·虚函数