我正在瀏覽CodeProject中的一些代碼,並且遇到了下面的C++代碼轉換代碼。C++ Cast的實現
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'方法更好。 –
也許這就是爲什麼它被命名爲可怕的演員。這基本上是爲了實現一些編譯器特定的行爲。 – KodeWarrior