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. 方案二:使用结构体替换联合体。
相关推荐
样例过了就是过了15 小时前
LeetCode热题100 多数元素
c++·算法·leetcode·贪心算法
nbwenren16 小时前
C++ 资源管理 —— RAII
开发语言·c++
Shadow(⊙o⊙)16 小时前
进程分析—从操作系统到Linux内核深入
linux·运维·服务器·开发语言·网络·c++·后端
计算机安禾16 小时前
【c++面向对象编程】第6篇:this指针:对象如何知道自己在调用谁?
开发语言·c++
2301_8152795216 小时前
如何实现C++ Web 自动化测试实战:常用函数全解析与场景化应用指南
开发语言·前端·c++
闻缺陷则喜何志丹16 小时前
【动态规划 前缀和】P7074 [CSP-J2020] 方格取数|普及+
c++·算法·前缀和·动态规划·洛谷
王老师青少年编程1 天前
csp信奥赛C++高频考点专项训练之字符串 --【子串查找】:[NOIP 2009 提高组] 潜伏者
c++·字符串·csp·高频考点·信奥赛·子串查找·潜伏者
初願致夕霞1 天前
基于系统调用的Linux网络编程——UDP与TCP
linux·网络·c++·tcp/ip·udp
小小de风呀1 天前
de风——【从零开始学C++】(五):内存管理
开发语言·c++
CHANG_THE_WORLD1 天前
C语言中的 %*s 和 %.*s 和C++的字符串格式化输出
c语言·c++·c#