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. 方案二:使用结构体替换联合体。
相关推荐
tankeven3 小时前
C++ 智能指针
c++
handler015 小时前
【算法模板】最小生成树:稠密图选 Prim,稀疏图选 Kruskal
c语言·数据结构·c++·算法
许长安5 小时前
RPC 异步调用基本使用方法:基于官方helloworld-async 示例
c++·经验分享·笔记·rpc
sparEE6 小时前
c++面向对象:对象的赋值
开发语言·c++
此生决int6 小时前
快速复习之数据结构篇——栈和队列
数据结构·c++
H_BB6 小时前
第17届蓝桥杯备战历程
c++·算法·职场和发展·蓝桥杯
daad7777 小时前
记录一次上下文切换次数的统计
服务器·c++·算法
tankeven7 小时前
C++ Lambda 表达式
c++
fangzt20107 小时前
插件系统:让其他人也能给编辑器写节点
c++
诙_7 小时前
深入理解C++文件操作
开发语言·c++