关于虚函数中,构建成虚函数表之后,如何调用父类函数

nevermorewish nevermorewish 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
class B
{
public:
virtual void f()
{
cout << "B::f()" << endl;
}
};
class B1 : public B
{
public:
virtual void f()
{
B::f(); //这个是如何取到地址的?
cout << "B1::f()" << endl;
}
};

如上代码中 会输出 B::f()和B1::f()
但是我看完了《虚函数解析》之后,认为子类的虚函数会直接覆盖父类的虚函数
在整个子类虚函数表中已经找不到 被覆盖的父类函数了
那么上述 B;;f()代码是如何寻址的呢?
...全文

相关推荐

IT公司面试笔试题系列

该文档给出了公司一些常见的面试笔试题,在求职时可以复习复习。里面给出了详细的答案,并且配有代码,希望对大家有所帮助。

csharpupdown

C++ 多态 虚函数 虚函数表 最是详细

高质量的C++多态讲解,详细讲解虚函数,虚函数表,虚函数继承,虚函数继承下的内存分配等

sunqichang2012

c++中子类对象不能调用父类中的虚函数

c++里,指针和引用是很重要的概念,这个程序不仅对指针和引用做了说明、使用,而且对子类不能继承父类虚函数也做了说明。

javaop

C++虚函数及虚函数表解析

C++虚函数及虚函数表解析,内容详细,分析清晰,推荐给大家。

lljnh

C++虚函数表实例分析

多态是C++面向对象程序设计的一个重要特性。以前看到虚函数觉得很神奇,为什么就能实现多态了呢。最初的时候曾设想,要实现运行时多态,应该让对象的某个部分始终指向一个固定的地址,子类继承的时候,就修改这个地址的内容。这样,父类和子类都是到同一个固定地址去读取内容,在运行时就能表现不同行为。 在看了《深度探索c++对象模型》之后,发现思路是类似的。在对象中,有一个指针指向一张虚函数表,里面按照次序存放了每一个虚函数,当子类继承的时候,即到虚函数表的指定位置去修改函数地址。当我们通过父类指针来操作一个子类的时候,调用虚函数,都是通过虚函数表+固定的偏移,这样运行期多态便实现了。 在深度《深度》这本书中

weixin_38618024
评论 17
收藏 已收藏
分享
返回顶部
nevermorewish
C++ 语言 65,214 成员 250,514 内容