c++11 union contains data member with virtual function
问题 #include <iostream> class derive1{ public: derive1() = default; ~derive1() = default; virtual void func() { std::cout << "derive 1" << std::endl; } }; class derive2 { public: derive2() = default; ~derive2() = default; virtual void func() { std::cout << "derice 2" << std::endl; } }; union classUnion { classUnion() {}; ~classUnion() {}; derive1 obj1; derive2 obj2; }; int main() { classUnion u1; u1.obj1.func(); // <-- OK print 'derive 1' derive1 &dev1 = u1.obj1; dev1.func(); // <-- OK print