union关键字和取类成员函数地址的方法
来源:互联网 发布:电子商务软件的下载 编辑:程序博客网 时间:2024/06/08 10:20
union关键字
union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:
union StateMachine
{
char character;
int number;
char *str;
double exp;
}addr;
特性:
1、所有数据成员中共享一个地址。
这个union中最长的变量类型是double,所以整个union占用的空间是double占用的空间。sizeof(addr)返回8。即整个union的长度是8。
2、一个union变量只能有标识多个数据成员的一种。
addr.number输出是0,因为此时union空间里装的是double exp。实际上,number的输出是double exp的低位(小端)。
可以通过union做一些有趣的事。
1.大端小端的判断。
大端小段的判断,打印1就是小端。
#include <iostream>
using namespace std;
int main(){
union{
int a;
char c;
}addr;
addr.a=1;
cout<<(int)addr.c<<endl;
}
2.取类成员函数地址(取自Thunk技术的一部分)
typedef void (_stdcall CButtonDemoBHO::*TMFP)();
//union巧取成员变量地址
union {
unsigned int func;
TMFP method;
} addr;
addr.method =(TMFP)&CButtonDemoBHO::pagescaner;
union {
unsigned int func;
TMFP method;
} addr;
这里addr.func的值就是类成员函数的地址。因为成员函数是一个独有的类型,不能强制转换,所以用union逃避类型检查。
- union关键字和取类成员函数地址的方法
- 获取类成员函数地址和调用的方法
- C++ Template 类成员函数取地址
- 类成员变量和成员函数的地址
- 总结C++中取成员函数地址的几种方法
- 类成员函数的地址
- 类成员函数的地址
- 获取成员函数地址的方法
- 获取成员方法的地址,将C++类成员方法转换成C自由函数
- C++对象和类的成员和类的成员函数地址空间探讨
- 成员函数的地址
- java中对类中的成员变量和成员方法的封装及private关键字
- 介绍了如何取成员函数的地址以及调用该地址:C++
- 介绍了如何取成员函数的地址以及调用该地址
- 类函数成员地址的注意问题 [**]
- 如何打印类成员函数的地址
- 获取类成员方法的地址
- 关键字static的作用是什么? C++类中的静态成员变量和静态成员函数的作用
- svn版本库创建
- Linux内核源码分析方法
- python操作处理Excel文件(转)
- android ListView中有按钮,无法获取焦点?android:descendantFocusability用法简析
- MyEclipse代码格式化后自定义模版不换行设置方法
- union关键字和取类成员函数地址的方法
- 从天黑走到天明
- 禁止使用拷贝构造函数和赋值函数操作的宏定义
- 时间测试函数
- 写Java程序要遵守的规则
- Linux core dump的详细介绍及使用
- 如何实现Flash中背景变色
- STL:Numberic_limit()
- xml 序列化及反序列化