C++ union 用于存储特定于案例的数据

标签 c++ unions

假设我为一个人存储数据。并且取决于它是男性还是女性,特定数据也将被存储。现在我应该使用 Union 来存储特定性别的部分吗?这是一个好的做法还是有更好的方法,尤其是使用 C++14?

最佳答案

Union 仅适用于基本类型,不适用于类。您的 union 中不能有 std::string。因此 union 在 C++ 中很少使用,而在 C 中使用较多。

在你的情况下,我会保持简单。最简单的方法是让所有数据成员都在同一个类中,无论性别如何,并且只使用正确的成员。

class Person
{
   // common stuff
   int age;
   int height;

   // female specific stuff
   // ???

   // male specific stuff
   // ???
};

或者你可以像这样使用继承:

class Person {};
class FemalePerson : public Person {};
class MalePerson : public Person {};

并且只在相应的派生类中有性别特定部分。

关于C++ union 用于存储特定于案例的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31980533/

相关文章:

c - C 中 union 内的结构

c++ - 当使用位域 union 替换位掩码时,访问非事件成员,好还是未定义?

c - C99 Keil MDK5 中的匿名结构、 union

c++ - 我在这里得到结构拷贝吗?

c++ - 使虚拟的实现也虚拟?

C++ for-each 语句触发 "vector iterators incompatible"断言失败 : this->_Getcont() == 0

c - 这段代码中union的意义是什么,structure的缺点是什么?

c++ - 我在 visual studio 中的程序没有显示任何内容,我的代码有什么问题?

c++ - 如何在 Qt 上实现 GDAL 库?

c++ - 如何从 C++ 源代码中提取所有类型定义、结构和 union