vptr和vtbl的问题?

cba_v cba_v 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
例如:

class Base
{
public:
Base(){}
virtual void newfun(){cout<<"Base::newfun!"<<endl;}
};

class Derived : public Base
{
public:
Derived(){}
virtual void oldfun(){cout<<"Derived::oldfun!"<<endl;}
};

1: 在基类 和 派生类 中分别声明了 不同的虚函数 那产生 几个 虚函数表啊? 是一个吗?
2: 在派生类中 也是只有 一个 虚指针吗(这个虚指针 就是 基类的虚指针?)? 如果是一个虚表和一个虚指针的话 那不是有点混乱了吗?
我认为 派生类中的虚函数 就是 虚指针指向基类虚函数的偏移量, 不知道 是否正确?
3: 我想用 类型强制转换来输出 基类的虚函数

int main()
{
base pp;
*(int*)*(int*)(&pp); //?
getchar();
return 0;
}

但是 什么也没有 不知道该怎么转换的?
谢谢了
...全文

相关推荐

浅度探索C++对象模型bin.ppt

浅度探索C++对象模型bin.ppt

louis7617

C++对象模型揭秘:vptr与vtbl的多态性机制解析及其应用场景

内容概要:本文详细介绍了C++对象模型的基础概念及其实现,重点探讨了虚指针(vptr)和虚函数表(vtbl)的关键作用。解释了vptr和vtbl是如何实现动态绑定及运行时多态,并展示了它们在设计模式(如工厂模式、策略模式)和具体项目案例(如图形绘制引擎)中的应用。通过具体实例分析,阐述了vptr和vtbl对C++面向对象编程的重要意义和优势。 适合人群:具有一定编程基础、熟悉C++语法,并有兴趣深入了解C++对象模型和面向对象编程原理的研发人员。 使用场景及目标:①帮助开发者理解和掌握C++多态性的实现原理,提高代码复用性与灵活性;②通过典型案例加深对vptr/vtbl的理解和应用;③培养更好的面向对象编程思维和技术实践能力。 阅读建议:本篇文章内容详尽、理论联系实际,在学习过程中可以通过实践编写简单的类层次结构验证所学概念,强化对vptr/vtbl工作机制的认识。

大雨淅淅

OOP in C(C语言实现面向对象编程)

这份文档描述了如何用C语言来实现OOP的三大基本概念:封装、继承、多态。其中前两个实现起来非常简单,不用花费任何的代价就可以实现。

泰乐熊

C++引用和指针的区别,C++虚函数原理,C++面试经验

介绍了引用和指针的区别,C++虚函数原理,C++面试经验。

csh_1026

AN_Simple_OOP_in_C.pdf

在C语言中 使用 面向对象的思想 编程 可以是 做一个 C库 供其他的 C程序调用 该方法 主要是 状态机 QP HSM 中使用

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