编译通不过,为什么呢?
因为联合里不允许存放带有构造函数、析够函数、复制拷贝操作符等的类,因为他们共享内存,编译器无法保证这些对象不被破坏,也无法保证离开时调用析够函数。
3)又是匿名惹的祸??
我们先看下一段代码:
- class test {
- public: test(const char* p);
- test(int in); const operator char*() const {return
- data.ch;} operator long() const {return data.l;}
- private: enum type {Int, String };
- union {
- const char* ch; int i;
- }datatype; type stype;
- test(test&); test& operator=(const test&);
- }; test::test(const char *p):stype
- (String),datatype.ch(p) { } test::test(int in):stype(Int),datatype.l(i) {
- }










