社区
C语言
帖子详情
如何能访问一个对象的vptr啊
szlbyou
2002-02-02 12:59:53
例:
class test{
public:
test(){...}
virtual ~test(){...}
private:
...
};
如何能访问一个对象的vptr,能访问吗?
...全文
94
4
打赏
收藏
如何能访问一个对象的vptr啊
例: class test{ public: test(){...} virtual ~test(){...} private: ... }; 如何能访问一个对象的vptr,能访问吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LLnju
2002-02-02
打赏
举报
回复
下面的测试在 VC上通过:
#include <windows.h>
#include <iostream>
#include <vector>
using namespace std;
struct testVtbl
{
int a , b;
virtual void __cdecl show() const
{
cout << a << " " << b << endl;
}
virtual void __cdecl showB() const
{
cout << b << " " << a << endl;
}
virtual void __cdecl showInfo( const char* inf ) const
{
cout << inf << endl;
}
};
typedef void (__cdecl * pFun )( const testVtbl* pThis );
typedef void (__cdecl * pFun2 )( const testVtbl* pThis , const char* inf );
void main()
{
testVtbl tv;
testVtbl* ptv = &tv;
tv.a = 100; tv.b = 10000;
pFun* __pvfptr = reinterpret_cast<pFun**>( ptv )[0];
pFun pp = __pvfptr[0];
pp( ptv );
pp = __pvfptr[1];
pp( ptv );
pFun2 pp2 = reinterpret_cast<pFun2*>(__pvfptr)[2];
pp2( ptv , "this is a test" );
}
hz129
2002-02-02
打赏
举报
回复
只要知道它的存在就行了,何必要访问它?
每个编译器中它所存放的位置都可能不一样,即使访问了也没有移植性可言,根本毫无意义的
liu_feng_fly
2002-02-02
打赏
举报
回复
有必要访问他吗?何必研究这种无聊问题呢
szlbyou
2002-02-02
打赏
举报
回复
请各位赐教!
关于
vptr
(虚指针)和vtbl(虚函数表)1
当
一个
类中定义了虚函数,编译器就会为该类的每个实例添加
一个
虚指针,这个虚指针(
vptr
)指向
一个
称为虚函数表(virtual table)的数据结构。虚函数表(vtbl)包含了类中所有虚函数的函数指针,每个函数指针对应类中的一...
面向
对象
中函数的联编机制
在C++中,为了支持动态联编,编译器会自动为每个具有至少
一个
虚拟函数的类创建
一个
**虚拟函数表**(Virtual Table, vtable),并在每个
对象
中插入
一个
指向该表的指针(
vptr
)。 - **虚拟函数表的结构**:vtable是
一个
...
C++虚函数多态的工作原理
在每个具有虚函数的类
对象
中,编译器会隐式地插入
一个
vpointer(
VPTR
),它是
一个
指针,指向
对象
所属类的VTABLE。这意味着每个类
对象
都有自己的
VPTR
副本,而在
对象
构造时,
VPTR
会被初始化为指向相应的VTABLE。 当...
博客虚函数表的作用.rar
在C++中,当创建
一个
带有虚函数的类的
对象
时,编译器会为该
对象
分配空间,除了
对象
的数据成员外,还会包括
一个
隐藏的指针,即
vptr
,指向该类的vtable。这个
vptr
在构造函数初始化列表中被设置,确保
对象
一旦构造完成...
高质量C++编程指南 第五章、C++高级特性.ppt
vtable是
一个
包含类中所有虚函数地址的数组,每个多态类
对象
都有
一个
隐含的
vptr
(虚表指针),指向对应的vtable。 - 派生类继承基类的非静态成员,并且可以
访问
它们。如果基类有虚函数,派生类会继承这个虚函数,并...
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章