C++联合体union用法实例详解

2020-01-06 13:13:54丽君

编译通不过,为什么呢?

因为联合里不允许存放带有构造函数、析够函数、复制拷贝操作符等的类,因为他们共享内存,编译器无法保证这些对象不被破坏,也无法保证离开时调用析够函数。

3)又是匿名惹的祸??

我们先看下一段代码:

 

 
  1. class test  { 
  2. public:  test(const char* p); 
  3. test(int in);  const operator char*() const {return 
  4. data.ch;}  operator long() const {return data.l;} 
  5. private:  enum type {Int, String }; 
  6. union  { 
  7. const char* ch;  int i; 
  8. }datatype;  type stype; 
  9. test(test&);  test& operator=(const test&); 
  10. };  test::test(const char *p):stype 
  11. (String),datatype.ch(p) { }  test::test(int in):stype(Int),datatype.l(i) {