C++中如何通过无成员变量的空类存储数据

最近看到一个比较有意思的存储数据的方法,使用了类,但是不是使用成员变量来存储,所以称为假类(Fake Class)模式,觉得思路挺有意思的,拿来分享一下。

整体思路

思路比较独特,我们都知道类中如果没有成员变量,没有虚函数,也不是虚拟继承而来的子类,只有非虚成员函数,那么该类可以认为是个空类,也就是类的大小为0(此类型的类在实际编译器中大小一般为1,是为了唯一标识对象之用)。既然没有成员变量又该如何存储特定的信息呢,答案其实就是利用this指针指向相应的内存,通过逻辑运算,存取相应的属性值。

简单示例:
typedef unsigned long int uint32;
typedef unsigned char uint8;

//mask code: 0 bit of 1, 1 bit of 1, 2 bits of 1....n bits of 1
const uint32 mask[] = { 0x00000000,
                        0x00000001, 0x00000003, 0x00000007, 0x0000000F,
                        0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF,
                        0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF,
                        0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF,
                        0x0001FFFF,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值