未知类函数指针的size
发布日期:2021-06-30 22:07:59 浏览次数:2 分类:技术文章

本文共 789 字,大约阅读时间需要 2 分钟。

今天同学那有了一段稀罕代码, 计算出的类函数指针size = 16. 他也找到了原因.

我也学习一下.

class CUnknownClass; ///< 不存在的类/// 只定义一个不存在的类的函数指针是不会错的的typedef void (CUnknownClass::*PFN_ClassMethod)();class A{public:    PFN_ClassMethod m_pClassMethod;};void fnTestUnknownClassPtSize(){    int nSize = 0;    PFN_ClassMethod pClassMethod = NULL;    A testA;    nSize = sizeof(pClassMethod);    cout << "sizeof(pClassMethod) = " << nSize << endl;    nSize = sizeof(testA);    cout << "sizeof(testA) = " << nSize << endl;    /** run result    sizeof(pClassMethod) = 16    sizeof(testA) = 16    */    /** 资料 : 成员函数指针size不是4的原因    首先是大小的改变。    虽然“成员函数指针”是一种指针,但它所占的空间却可能比一般指针要大。    以VC为例(VC6至VC2010均如此),在单继承、多继承、虚拟继承的情况下,    成员函数指针的大小分别为4字节、8字节、12字节。    如果不知道一个类是否继承(此时这个类只有一份向前声明,而没有提供实际定义),    则它的成员函数指针最多可以占据16个字节,大大的超过了一般指针的4字节。    */}

转载地址:https://lostspeed.blog.csdn.net/article/details/50375980 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:在类有成员变量的场景下, 按照虚表原理, 模拟虚函数实现
下一篇:类虚函数表原理实现分析

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年05月04日 02时21分48秒