C++:基本-union是没有构造函数和析构函数的

今天发现当我在union中包含了多个结构体时,结构体有默认构造函数时,编译报错。

问题点:

  1. union不支持构造函数和析构函数
  2. union中的元素本身也是不支持构造函数和析构函数的。
  3. 包含union的结构体也不支持构造函数和析构函数。

出错代码如下:

cpp 复制代码
struct MyStruct {
    MyStruct() { /* 构造函数代码 */ }
    ~MyStrcut(){/* 析构函数代码*/}
    int a;
    double b;
};

union MyUnion {
    MyStruct s;
    int i;
};

解决方案如下:

  1. 方案一:移除结构体中的构造函数,在使用union的外部初始化;
  2. 方案二:使用结构体替换联合体。
相关推荐
雾岛听蓝8 小时前
C++11新特性(lambda、包装器)
c++·经验分享·笔记
散峰而望8 小时前
C++ 启程:从历史到实战,揭开命名空间的神秘面纱
c语言·开发语言·数据结构·c++·算法·github·visual studio
PingdiGuo_guo9 小时前
C++数据类型、变量常量
开发语言·c++
水饺编程9 小时前
第4章,[标签 Win32] :TextOut 测试案例3代码改编
c语言·c++·windows·visual studio
Darkwanderor10 小时前
数据结构 - 并查集的应用
数据结构·c++·并查集
多恩Stone10 小时前
【C++ debug】在 VS Code 中无 Attach 调试 Python 调用的 C++ 扩展
开发语言·c++·python
PingdiGuo_guo10 小时前
C++联合体详解!
开发语言·c++
浅念-11 小时前
C++ 继承
开发语言·c++·经验分享·笔记·学习·算法·继承
王老师青少年编程11 小时前
csp信奥赛C++之反素数
数据结构·c++·数学·算法·csp·信奥赛·反素数
YxVoyager12 小时前
基于 X-Macro 宏的手动 RTTI 实现模式
c++