博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
错误 C2280 Union : 尝试引用已删除的函数 以及 警告 C4624 “Grade”: 已将析构函数隐式定义为“已删除”的一种解决方法...
阅读量:5104 次
发布时间:2019-06-13

本文共 762 字,大约阅读时间需要 2 分钟。

Union 是C/C++语言中的一种结构类型,用于定义可共享内存的数据变量的一种方式,初次使用Union联合体时可能会遇到以下问题:

 错误 C2280 Union : 尝试引用已删除的函数 

 警告 C4624 “Grade”: 已将析构函数隐式定义为“已删除”

不多说代码:

1 // TemplateExe1.cpp : 定义控制台应用程序的入口点。 2 // 3  4 #include "stdafx.h" 5 #include 
6 #include "atlstr.h" 7 using namespace std; 8 union Grade { 9 int number;10 CString mark;11 bool pass;12 13 }uGrade;14 int main()15 {16 uGrade.number = 90;17 printf("%d",uGrade.number);18 getchar();19 20 return 0;21 }

此错误的原因:CString 是一个类,有自己的构造函数,析构函数。

解决方案:CString 换成基本的数据类型:char 等

我们分析一下:

Union的一大特征在于,一个Union类中的所有数据共享同一段内存。如果union类的成员包含自己的构造函数,析构函数,那么同一Union类的成员在初始化时,就有可能会执行不同的构造函数。这是无法预料的。所以,我们在定义Union类时要尽量避免成员变量是对象(含有自己的构造函数)。

转载于:https://www.cnblogs.com/LiuBingBlogs/p/8545541.html

你可能感兴趣的文章
IT项目经验和难点分享
查看>>
那些黑刘翔的人,你们的良心被狗吃了
查看>>
TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?...
查看>>
Redis系列--内存淘汰机制(含单机版内存优化建议)
查看>>
最小二乘法
查看>>
iptables端口转发
查看>>
金融三问
查看>>
HTML5新API记录
查看>>
Android 8 AudioPolicy 分析
查看>>
Java Web开发后端常用技术汇总
查看>>
How to use jQuery countdown plugin
查看>>
富文本常用封装(NSAttributedString浅析)
查看>>
c++ STL
查看>>
json数据在前端(javascript)和后端(php)转换
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Groovy中那些神奇注解之ToString
查看>>
宇宙第一开发工具:vs2019 开发Python
查看>>
Tomcat Https配置
查看>>
待续--mysql中key 、primary key 、unique key 与index区别
查看>>
Day19内容回顾
查看>>