| class TestUnion { enum StoreType{Long,Const_CharP}; union DataUnion //不能匿名 { DataUnion(const char*); //声明const char*构造函数 DataUnion(long); //声明long构造函数 const char* ch_; long l_; } data_; StoreType stype_; TestUnion(TestUnion&); TestUnion& operator=(const TestUnion&); public: TestUnion(const char* ch); TestUnion(long l); operator const char*() const {return data_.ch_;} operator long() const {return data_.l_;} }; TestUnion::TestUnion(const char* ch):data_(ch),stype_(Const_CharP) {//注意data_(ch),这里直接引用data_ } TestUnion::TestUnion(long l):data_(l),stype_(Long) {//注意data_(l),这里直接引用data_ } TestUnion::DataUnion::DataUnion(const char* ch):ch_(ch) { } TestUnion::DataUnion::DataUnion(long l):l_(l) { } |