【发布时间】:2018-02-17 18:36:15
【问题描述】:
我正在阅读 Bjarne Stroustrup 的《C++ 编程语言》。它关于工会的声明:
“偶尔会故意使用联合来避免类型转换。例如,可能会: 使用 Fudge 查找指针 0 的表示:
union Fudge{
int i;
int* p;
};
int main()
{
Fudge foo;
foo.p= 0;
cout<< "the integer value of the pointer 0 is" << foo.i<< ´\n´;
} "
我知道这个代码片段给出了指针 0 的表示。但是它如何避免文本中提到的类型转换?
【问题讨论】:
-
它使用了一个联合,从而避免了类型转换。
-
这不是有效的 C++ 代码。我们不就是有这个吗? stackoverflow.com/questions/48843760/…你发帖
-
@NeilButterworth 为什么
-
因为 C++ 标准是这么说的。
-
std::variant 可能会有所帮助,尽管它可能会增加一些开销
标签: c++ type-conversion unions