itdk 2021-05-31 19:42 采纳率: 25%
浏览 26

关于union的默认构造函数被删除后如何使用的问题

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的拷贝构造函数却隐式的调用了默认构造函数,该怎么解释。 

  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?