在 OOP 中使用 Union

Alo*_*ave 5 c++ unions language-lawyer

联合可以像类和结构一样用作类型(有一些限制)。它可以有成员函数。它可以用作 OOP 构造。

据我所知,联合只是被导入到 C++ 中以保持与 C 的向后兼容性。
在这些年的编程中,我从未像使用类或结构作为 OOP 构造那样使用联合。

Union 是否有任何实际用途作为 OOP 构造(不仅仅是作为数据类型),或者它只是语言的一些残留部分,从来没有用过?


编辑:
该标准绝对允许联合充当 OOP 构造。它允许在联合中使用成员函数。以下代码编译和工作并且符合标准:

union A
{
    int a;
    int k;

    void doSomething(){}

};

int main()
{
    A obj;
    int i = obj.a;
    obj.doSomething();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果标准不应该充当 OOP 构造,为什么标准允许联合中的成员函数?
请发布具有特定推理的答案,并且请不要发布我不这么认为的答案,如果没有很好的理由推理

Dav*_*eas 5

,联合不是面向对象的构造。

OO 最重要的一个特性是多态性,但联合不能参与继承关系(不能是不同类型的基,不能有基本身)或具有虚函数。联合的唯一目的是提供数据类型,而不是对象