gpt4 book ai didi

c++ - 匿名 union 在现实世界 C++ 编程中的实际应用

转载 作者:太空狗 更新时间:2023-10-29 19:51:24 25 4
gpt4 key购买 nike

我知道我们可以访问匿名 union 而无需创建它的对象(没有点),但是谁能解释一下,匿名 union 在现实世界的 C++ 编程中有什么用?

最佳答案

我主要使用 union 将多种不同类型的元素存储在同一个连续存储中,而不求助于动态多态性。因此,我的 union 的每个元素都是一个描述相应节点类型数据的结构。使用 anonymous union 通常会提供更方便的表示法,即代替 object.union_member.struct_member,我可以只写 object.struct_member,因为反正没有其他成员叫这个名字。

我最近使用它们的一个例子是一个 Root过的(主要是二叉树)树,它有不同类型的节点:

struct multitree_node {
multitree_node_type type;
...
union {
node_type_1 n1;
node_type_2 n2;
...
};
};

使用此类型标记 type 我能够确定要使用 union 的哪个元素。所有结构 node_type_x 的大小大致相同,这就是我首先使用 union 的原因(没有未使用的存储)。

在 C++17 中,您可以使用 std::variant 执行此操作,但目前,使用匿名 union 是实现此类“多态”类型的便捷方式,无需 >虚拟函数。

关于c++ - 匿名 union 在现实世界 C++ 编程中的实际应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com