我正在 CodeProject 中研究一些代码,发现以下代码用于 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_union<OutputClass, InputClass> u;
u.in = input;
return u.out;
}
为什么要以上述方式实现转换,为什么不能手动进行转换。能否举个例子说明普通转换不起作用的情况?
为什么采用这种方式进行类型转换,不能手动进行强制转换吗?能否举一个例子说明常规强制转换无法正常工作的情况?
horrible_union
方法更好。 - David Hammen