共用体は、クラスや構造体と同じように型として使用できます (いくつかの制限があります)。メンバー関数を持つことができます。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;
}
OOP コンストラクトとして機能することが想定されていない場合、標準でユニオン内のメンバー関数が許可されているのはなぜですか?
具体的な理由を添えて回答を投稿してください。正当な理由がなければ、そうは思わない回答を投稿しないでください。