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. 方案二:使用结构体替换联合体。
相关推荐
雪度娃娃33 分钟前
结构型设计模式——享元模式
c++·设计模式·享元模式
TIEM_6942 分钟前
C++string|遍历、模拟实现、赋值拷贝现代写法
开发语言·c++
计算机安禾1 小时前
【c++面向对象编程】第14篇:多态(一):虚函数——实现“一个接口,多种方法”
开发语言·c++
Hua-Jay1 小时前
OpenCV联合C++/Qt 学习笔记(十七)----凸包检测、直线检测及点集拟合
c++·笔记·qt·opencv·学习·计算机视觉
basketball6161 小时前
C++ Lambda 表达式完全指南
开发语言·c++·算法
不知名的老吴1 小时前
C++中emplace函数的不适场景总结(三)
开发语言·c++·算法
2401_892070981 小时前
C++ 缓存线程池(CachedThreadPool):原理、实现、对比
c++·缓存·缓存线程池
玉树临风ives1 小时前
atcoder ABC 457 题解
数据结构·c++·算法
小张成长计划..2 小时前
【C++】31:异常
c++
wenyi_leo2 小时前
豆包建议:C++ 学习资料
c++