union可以避免c++的类型检查
2008-09-06 16:57
225 查看
在阅读到fastdelegate.h中,看到这么一段代码
template <class OutputClass, class InputClass>
union horrible_union
{
OutputClass out;
InputClass in;
};
template<class OutputClass, class InputClass>
inline OutputClass horrible_cast(const InputClass input)
{
horrible_uion<OutputClass, InputClass> u;
typedef int ERROR_CantUserHorrible_cast[sizeof(InputClass) == zizeof(u) && sizeof(InputClass) == sizeof(OutputClass) ? 1 : -1];
u.in = input;
return u.out;
};
这里(强制把input转换成output类型),在函数中使用了一个union来避免C++的类型检查
template <class OutputClass, class InputClass>
union horrible_union
{
OutputClass out;
InputClass in;
};
template<class OutputClass, class InputClass>
inline OutputClass horrible_cast(const InputClass input)
{
horrible_uion<OutputClass, InputClass> u;
typedef int ERROR_CantUserHorrible_cast[sizeof(InputClass) == zizeof(u) && sizeof(InputClass) == sizeof(OutputClass) ? 1 : -1];
u.in = input;
return u.out;
};
这里(强制把input转换成output类型),在函数中使用了一个union来避免C++的类型检查
相关文章推荐
- C++中的int类型越界检查构思
- C++中的运行时类型检查
- C++ 是一门静态类型语言,在编译时会作类型检查
- C++ 关键字typeid 运行时类型检查
- 关于C++类型检查的一点小挫折
- C++运行时类型检查
- 第六讲:c/c++复合数据类型struct以及联合类型union,动态内存申请malloc和calloc
- C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
- C++中的运行时类型检查
- <C++>_C++的类型检查更严格
- C++类型检查
- C++中名字隐藏,名字查找优先于类型检查
- C++:联合类型(union)
- C++检查输入数据类型? - 知乎
- C++ 关键字typeid 运行时类型检查
- C/C++中检查变量类型函数typeid()
- 关于C++类型检查的一点小挫折
- 关于C++类型检查的一点小挫折
- C++中常见数据类型的sizeof值,以及计算struct和union的详细方法
- C++ hack:将C++编译器的类型检查转化为SLR(1)解析器