社区
C语言
帖子详情
如何能访问一个对象的vptr啊
szlbyou
2002-02-02 12:59:53
例:
class test{
public:
test(){...}
virtual ~test(){...}
private:
...
};
如何能访问一个对象的vptr,能访问吗?
...全文
66
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
打赏
举报
回复
请各位赐教!
c++多态之——
vptr
指针
c++多态之——
vptr
指针 之前做过一个测试,在一个类中定义一个virtual修饰的函数时,sizeof这个类,发现类的大小多了恰好一个指针的...存在虚函数时,每个
对象
都有一个指向虚函数的指针(
vptr
指针) 在实现多态的过程
C++
对象
模型3——
vptr
的位置、手动调用虚函数、从汇编代码看普通调用和多态调用
一、
vptr
的位置 class test { public: int i; virtual void testfunc() {} }; int main() { test a; char* p1 = reinterpret_cast<char*>(&a); char* p2 = reinterpret_cast<char*>(&...
c++(22)多态和虚函数、虚函数表和
vptr
、
对象
指针的步长
多态是
对象
对象
程序设计的一个重要特征,能增加程序的灵活性。可以减轻系统升级、维护、调试的工作量和复杂度。可以通过基类指针对所有派生类(包括直接派生和间接派生)的成员变量和成员函数进行“全方位”的
访问
,...
虚函数表、
vptr
指针、父类指针和子类指针
通过virtual关键字修饰函数,可以实现多态,本质是编译器会在类中生成一个虚函数表,在给
对象
开辟空间时会默认增加一个指针
vptr
,这个指针指向虚函数表; 一个
vptr
指针占4个字节长度,通过virtual修饰函数时就会...
C语言
69,378
社区成员
243,075
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章