class Token {
enum {INT,CHAR,DBL,STR } tok; //diterminant
union{//匿名union
char cval;
int ival;
double dval;
string sval;
};
void copyUnion(const Token&);
public:
Token() :tok(INT) { ival = 0; }
Token(const Token& t) :tok(t.tok) { copyUnion(t); }
Token& operator=(const Token&);
~Token() { if (tok == STR) sval.~string(); }
Token& operator=(const std::string&);
Token& operator=(char);
Token& operator=(int);
Token& operator=(double);
};
这段C++Primer中的代码,匿名union的默认构造函数已被删除,但Token的拷贝构造函数却隐式的调用了默认构造函数,该怎么解释。