vptr和vtbl的问题?
例如:
1: 在基类 和 派生类 中分别声明了 不同的虚函数 那产生 几个 虚函数表啊? 是一个吗?
2: 在派生类中 也是只有 一个 虚指针吗(这个虚指针 就是 基类的虚指针?)? 如果是一个虚表和一个虚指针的话 那不是有点混乱了吗?
我认为 派生类中的虚函数 就是 虚指针指向基类虚函数的偏移量, 不知道 是否正确?
3: 我想用 类型强制转换来输出 基类的虚函数
但是 什么也没有 不知道该怎么转换的?
谢谢了
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
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++面试经验。
AN_Simple_OOP_in_C.pdf
在C语言中 使用 面向对象的思想 编程 可以是 做一个 C库 供其他的 C程序调用 该方法 主要是 状态机 QP HSM 中使用


