c++ - 具有 union 成员的结构是否符合 POD 资格?

标签 c++ unions

这个结构MyWrapStruct可以吗:

struct MyWrapStruct
{
    bool myBool;
    union
    {
        struct
        {
            void* myPtr;
            int myInt;
        };
        Struct1 myStruct1;
        Struct2 myStruct2;
    } myStructs;
};

具有“子结构”:

struct Struct1
{
    void* myPtr;
    int myInt;
    float mySpecialFloat;
};

struct Struct2
{
    void* myPtr;
    int myInt;
    int mySpecialInt;
};

算不算POD结构?

最佳答案

是的 - 即使 union 类型也只包含数据,没有方法、构造函数等。

参见:

What are POD types in C++?

更新 当然,前提是 union 体只包含 POD 类型。

参见:

Questions regarding C++ non-POD unions

关于c++ - 具有 union 成员的结构是否符合 POD 资格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50186698/

相关文章:

C++ union 用法

C++ 跨文件夹包含失败

c++ - 使用哪种设计模式存储由第一个函数创建的指针,该指针将在以后使用?

c - c 和缓冲区中的多态性

c++ - 为什么类的大小是 1 个字节包含 union 成员?

scala - 无形:从副产品映射到不同的副产品

c++ - 使用 C++ 从 .OBJ 文件中读取和存储值

c++ - 如何将 Qt 表单类移动到另一个命名空间?

c++ - 虚拟继承中的问题

c - 对 union 中的字符进行 strcpy 时程序中止