コンストラクタを持ったクラスを共用体に使うとどうなるのか
#include <iostream> class Alfa { public: Alfa() { std::cout << __func__ << std::endl; } }; class Bravo { public: Bravo() { std::cout << __func__ << std::endl; } }; int main() { union { Alfa a; Bravo b; } u; return 0; }
答え:コンパイルエラー
$ g++ union_with_classes.cxx union_with_classes.cxx: In function ‘int main()’: union_with_classes.cxx:19: error: member ‘Alfa main()::::a’ with constructor not allowed in union union_with_classes.cxx:20: error: member ‘Bravo main():: ::b’ with constructor not allowed in union