社区
C语言
帖子详情
如何能访问一个对象的vptr啊
szlbyou
2002-02-02 12:59:53
例:
class test{
public:
test(){...}
virtual ~test(){...}
private:
...
};
如何能访问一个对象的vptr,能访问吗?
...全文
74
4
打赏
收藏
如何能访问一个对象的vptr啊
例: class test{ public: test(){...} virtual ~test(){...} private: ... }; 如何能访问一个对象的vptr,能访问吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)包含了类中所有虚函数的函数指针,每个函数指针对应类中的一...
类的
对象
的内存布局
但是,可以想象,如果能够看到内存布局图,我们会看到如下景象:
一个
对象
的内存开始于成员变量的序列,如果是从基类继承而来的
对象
,它还会包含
一个
或多个
vptr
指针,指向对应的vtables。如果是虚拟继承的结构,我们...
C++
对象
模型
this可以用来
访问
对象
的数据成员和调用成员函数,如`this->member`或`(*this).member`。 8. 深拷贝与浅拷贝 在C++中,
对象
的拷贝可能会涉及到深拷贝和浅拷贝的问题。浅拷贝只是简单地复制
对象
的存储空间,如果
对象
...
面向
对象
中函数的联编机制
在C++中,为了支持动态联编,编译器会自动为每个具有至少
一个
虚拟函数的类创建
一个
**虚拟函数表**(Virtual Table, vtable),并在每个
对象
中插入
一个
指向该表的指针(
vptr
)。 - **虚拟函数表的结构**:vtable是
一个
...
C++虚函数多态的工作原理
在每个具有虚函数的类
对象
中,编译器会隐式地插入
一个
vpointer(
VPTR
),它是
一个
指针,指向
对象
所属类的VTABLE。这意味着每个类
对象
都有自己的
VPTR
副本,而在
对象
构造时,
VPTR
会被初始化为指向相应的VTABLE。 当...
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章