社区
C语言
帖子详情
如何能访问一个对象的vptr啊
szlbyou
2002-02-02 12:59:53
例:
class test{
public:
test(){...}
virtual ~test(){...}
private:
...
};
如何能访问一个对象的vptr,能访问吗?
...全文
113
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/C++编程:数据成员的布局
class Point3d{ public: //... private: float x; static List<Point3d*> *freeList; float y; static const int chunkSize = 250; float z; }; 非静态数据成员在类
对象
中的排列顺序将和其被声明的顺序一样,任何中间介入的静态数据成员比如freeList和chunkSize都不会被放进
对象
布局中。 上面例子中,每
一个
Point3d
对象
是由3
vs如何编译运行_【C++札记】C++的多态如何在编译和运行期实现
作者:陶辉编辑:blog.csdn.net/russell_tao/article/details/7167929码农有道码农有道高质量技术文章目录整理(请戳我)关于码农有道(请戳我)多态是什么?简单来说,就是某段程序调用了
一个
API接口,但是这个API有许多种实现,根据上下文的不同,调用这段API的程序,会调用该API的不同实现。今天我们只关注继承关系下的多态。还是得通过
一个
例子来看...
C++类
对象
内存模型与成员函数调用分析
转自:http://blog.csdn.net/fairyroad/article/details/6376620 C++类
对象
内存模型是
一个
比较抓狂的问题,主要是C++特性太多了,所以必须建立
一个
清晰的分析层次。一般而言,讲到C++
对象
,都比较容易反应到以下这个图
探秘C++
对象
模型:
vptr
与vtbl的奇幻之旅
在 C++ 的世界里,
对象
模型就像是隐藏在代码背后的神秘引擎,默默驱动着程序的高效运行。简单来说,C++
对象
模型描述了 C++ 中
对象
在内存中的布局以及如何
访问
它们的成员,是 C++ 面向
对象
编程的底层支撑。它不仅决定了
对象
如何存储数据,还决定了函数调用的方式,直接影响着程序的性能和效率。
多重继承派生类
对象
的内存结构分析以及相应派生类
vptr
调用多态的方法
本次基于上一篇文章的实现进一步深入,分析了派生类
对象
的内存分布,并依据此分析实现了派生类
对象
通过
vptr
+偏移量
访问
类内以及基类中的所有虚函数和相应的成员变量,进一步验证了这种内存分布的真实性。
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章