VTABLE(虚表)的结构
来源:互联网 发布:eset知乎 编辑:程序博客网 时间:2024/05/18 20:47
VTABLE(虚表)的结构
--uper
--uper
以下是vtable和class的对应关系
class Point
class Point{
public:
virtual ~Point();
virtual Point& mult(float) = 0;
float x() const{return _x;}
virtual float y() const{return 0;}
virtual float z() const{return 0;}
protected:
Point(float x=0.0){};
float _x;
}
public:
virtual ~Point();
virtual Point& mult(float) = 0;
float x() const{return _x;}
virtual float y() const{return 0;}
virtual float z() const{return 0;}
protected:
Point(float x=0.0){};
float _x;
}
class Point2d 继承了class Point
class Point2d : public Point{
public:
Point2d(float x=0.0, float y=0.0) : Point(x), _y(y){};
virtual ~Point2d();
virtual Point2d& mult(float);
virtual float y() const{return _y;}
protected:
float _y;
}
public:
Point2d(float x=0.0, float y=0.0) : Point(x), _y(y){};
virtual ~Point2d();
virtual Point2d& mult(float);
virtual float y() const{return _y;}
protected:
float _y;
}
class Point3d 继承了Point2d
class Point3d : public Point2d{
public:
Point3d(float x=0.0, float y=0.0, float z=0.0) : Point2d(x, y), _z(z){};
virtual ~Point3d();
virtual Point3d& mult(float);
virtual float z() const{return _z;}
protected:
float _z;
}
public:
Point3d(float x=0.0, float y=0.0, float z=0.0) : Point2d(x, y), _z(z){};
virtual ~Point3d();
virtual Point3d& mult(float);
virtual float z() const{return _z;}
protected:
float _z;
}
对于ptr->y(), 编译器并不知道最终会调用哪个类的有y(), 编译器仅仅将其转换成:
(*ptr->vptr[3])(ptr);
vptr: 编译器产生的指向vtable的指针
3:y()在vtable中的index位置
在运行过程中,ptr会被赋予不同的对象,只有到那时才能知道某个对象通过vptr调用了自己vtable里的y().
- VTABLE(虚表)的结构
- 查看C++类的虚表(vtable)结构
- vtable
- vtable
- vtable
- C++中的 虚表(vtable)和虚指针(vptr)
- VTable中子查询的写法!
- C++ 多重继承和虚拟继承的内存布局(vtable,vptr)
- 我对C++ VTable 的理解
- [转帖]Dll 影响 vtable 的分析
- 我对C++ VTable 的理解
- QObject 出现undefined vtable的解决方法
- undefined reference to 'vtable for ***(类)'
- 我对C++ VTable 的理解 - theCFan的专栏 - CSDNBlog
- C++ vtable的生成以及vptr的赋值跟踪实验
- C++ vtable的生成以及vptr的赋值跟踪实验
- 关于Vtable的修改问题-不要随意加Columns
- C++编译器检索VTABLE的具体方法不同
- WebSphereV6服务集成总线的配置和操作
- iptables之类NAT篇
- 快速删除重复记录,SQL Server如何实现
- Netbeans下实现ajax用xml传值
- framework中的BBSTable
- VTABLE(虚表)的结构
- dsoFramer1.3汉化版
- 让IE6和IE7共存
- 功能齐全的DataGrid
- 自动赚钱的永动机----股票交易
- 事件和委托学习笔记(2007.12.20)
- 同步两个SQLServer数据库
- iframe中的session失效问题情况描述和解决
- tftp在Linux下的使用