最近看到一个比较有意思的存储数据的方法,使用了类,但是不是使用成员变量来存储,所以称为假类(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,