类外定义联合体提示构造函数已删除以及联合里面定义类报错

C++中class与union的坑

说明

这里解决了类的自定义构造函数提示“无法引用“联合”的默认构造函数–他是已删除的函数”,从而推理出来了一些结论

起因

出现的错误对象详情

经过

(一堆废话,主要讲事件的经过,急于找解决方法的跳过)今天在类外面声明了一个联合,类里面定义了一个联合变量,在写类的构造函数时,vs提示我“无法引用“联合”的默认构造函数–他是已删除的函数”。以前都是类里面定义变量,然后写有参缺省构造,这里还没对变量进行处理就给我报错了。弄得我一脸懵逼,直到我找到了一篇帖子说“因为c++禁止联合体中包含有非默认的构造函数和析构函数的类型,许多继承的Qt类不能在联合体中使用(这些类都有自定义的构造/析构函数)。”。当然啦,这一句与我们的问题毫无关系,但是仔细读,就产生了一个疑问:“联合为啥要禁止非默认构造函数和析构函数,难道他要调用构造函数?既然他会调用类的构造函数,是否表明他也有默认的构造函数?”。是的,联合也有构造函数,只要自定义联合体的构造函数就可以。

结论

联合体和类一样,都有构造函数,有的时候需要我们自己去定义,所以我在另一篇帖子里看到的问题:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值