在面向对象的编程中,嵌套使用有很多好处,这里对我用到的进行简单整理,后续在进行扩充
1.在共用体中嵌套结构体
说明:共用体中嵌套入结构体,是为了省内存考虑,因为共用体定义的成员变量并不是都会被用到。
typedef union
{
struct
{
int a:16;
int b:16;
};
int temp;
}DataInfo;
int main()
{
DataInfo data;
data.temp = 20;
printf("data = %d\n",data.a);
printf("data 大小 =%d\n",sizeof(DataInfo));
return 0;
}
分析:内存大小为4个字节,data.a的数值为4,同时对a和b的操作,仅仅通过对temp的操作来实现即可,如果想对b的值赋值,就对data.temp = (20<<16)
。
2.在结构体中嵌套共用体
这个套用网友的推荐,链接如下:这种用法的好处是对成员的实现更加的清晰,便于理解。
https://zhuanlan.zhihu.com/p/338852871
enum DATA_PKG_TYPE
{
DATA_PKG1 = 1,
DATA_PKG2,
DATA_PKG3
};
struct data_pkg1
{
// ...
};
struct data_pkg2
{
// ...
};
struct data_pkg3
{
// ...
};
struct data_pkg
{
enum DATA_PKG_TYPE data_pkg_type;
union
{
struct data_pkg1 data_pkg1_info;
struct data_pkg2 data_pkg2_info;
struct data_pkg3 data_pkg3_info;
}data_pkg_info;
};