一个类有多个基类的内存布局

没有虚函数时

/// @file test_class.c
/// @brief 测试一个类有多个基类的内存布局(没有虚函数时, 有虚函数时)

#include <stdlib.h>
#include <stdio.h>

class CA {
public:
    CA() : iA(1) {}
    int iA;
};

class CB : public CA {
public:
    CB() : iB(2) {}
    int iB;
};

class CC : public CB {
public:
    CC() : iC(3) {}
    int iC;
};

void fnTest()
{
    CC a;

    /**
    0018FEE4  01 00 00 00  .... ///< 顶层基类CA数据
    0018FEE8  02 00 00 00  .... ///< 基类CB数据
    0018FEEC  03 00 00 00  .... ///< 本类CC数据
    */
}

int main(int argc, char *argv[])
{
    fnTest();
    return 0;
}

有虚函数时

/// @file test_class.c
/// @brief 测试一个类有多个基类的内存布局(没有虚函数时, 有虚函数时)

#include <stdlib.h>
#include <stdio.h>

class CA {
public:
    CA() : iA(1) {}
    virtual ~CA() {}
    int iA;
};

class CB : public CA {
public:
    CB() : iB(2) {}
    virtual ~CB() {}
    int iB;
};

class CC : public CB {
public:
    CC() : iC(3) {}
    virtual ~CC() {}
    int iC;
};

void fnTest()
{
    CC a;

    /**
    0018FEE4  1C 20 42 00  . B. ///< 本类CC虚函数表
    0018FEE8  01 00 00 00  .... ///< 顶层基类CA数据
    0018FEEC  02 00 00 00  .... ///< 基类CB数据
    0018FEF0  03 00 00 00  .... ///< 本类CC数据
    */
}

int main(int argc, char *argv[])
{
    fnTest();
    return 0;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值