当前位置: 首页 > news >正文

c++学习-类中类成员变量的创建和释放顺序2-资源new出来的对象未被手动delete

构造顺序和正常运行一样:c++学习-类中类成员变量的创建和释放顺序1-进程正常结束释放资源-CSDN博客

析构时只会静态存储区资源都会被正常释放,堆区资源不会被释放

#include <iostream>
#include <memory>using namespace std;class WorkerA {
public:WorkerA() {cout << "WorkerA created." << endl;}~WorkerA() {cout << "WorkerA destroyed." << endl;}
};class WorkerB {
public:WorkerB() {cout << "WorkerB created." << endl;}~WorkerB() {cout << "WorkerB destroyed." << endl;}
};class WorkerC {
public:WorkerC() {cout << "WorkerC created." << endl;}~WorkerC() {cout << "WorkerC destroyed." << endl;}
};class WorkerD
{
public:WorkerD() {cout << "WorkerD created." << endl;}~WorkerD() {cout << "WorkerD destroyed." << endl;}
};class WorkerE {public:WorkerE() {cout << "WorkerE created." << endl;}~WorkerE() {cout << "WorkerE destroyed." << endl;}
};class WorkerF {public:WorkerF() {cout << "WorkerF created." << endl;}~WorkerF() {cout << "WorkerF destroyed." << endl;}
};class WorkerG {public:WorkerG() {cout << "WorkerG created." << endl;}~WorkerG() {cout << "WorkerG destroyed." << endl;}
};class Base {public:Base() {cout << "Base created." << endl;}virtual ~Base() {cout << "Base destroyed." << endl;}
};class Factory : public Base{
public:WorkerA workerA; // 成员变量,WorkerA对象std::unique_ptr<WorkerB> workerB = make_unique<WorkerB>(); // 智能指针,指向WorkerB对象WorkerC* workerC = new WorkerC(); // 成员变量,WorkerC对象static WorkerD workerD; // 静态成员变量,WorkerD对象WorkerF* workerF = new WorkerF(); // 成员变量,WorkerF对象Factory() {static WorkerE workerE; // 静态成员变量,WorkerE对象cout << "Factory created." << endl;}static void createWorkerG() {static WorkerG workerG; // 局部变量,WorkerG对象cout << "WorkerG created in Factory." << endl;}~Factory() {cout << "Factory destroyed." << endl;delete workerC;}
};int main() {Factory *factory = new Factory();factory->createWorkerG(); // 创建WorkerG对象//delete factory; // 删除Factory对象,触发析构函数Factory::createWorkerG();return 0;
}
WorkerD Factory::workerD = WorkerD(); // 静态成员变量的定义和初始化

http://www.lryc.cn/news/583662.html

相关文章:

  • Python通关秘籍之基础教程(一)
  • Vue 中mounted 生命周期钩子的执行时机和 v-for 的渲染顺序
  • 深度学习遇到的问题
  • 射频信号(大宽高比)时频图目标检测anchors配置
  • 基于DeepSeek构建的openGauss AI智能优化助手:数据库性能提升新利器
  • vscode 防止linux索引爆红
  • AI智能体记忆架构的革命:LangGraph中的分层记忆系统实现
  • vue3面试题(个人笔记)
  • Flutter基础(前端教程⑧-数据模型)
  • vue快速上手
  • 设计模式(行为型)-责任链模式
  • ARM单片机OTA解析(一)
  • whitt算法之特征向量的尺度
  • 数据结构之位图和布隆过滤器
  • 详解CAN总线的位填充机制
  • 数据结构——深度优先搜索与广度优先搜索的实现
  • [附源码+数据库+毕业论]基于Spring Boot+mysql+vue结合内容推荐算法的学生咨询系统
  • RabbitMQ 4.1.1-Local random exchange体验
  • C++如何进行性能优化?
  • 19-C#静态方法与静态类
  • 【WEB】Polar靶场 21-25题 详细笔记
  • 从0开始学习R语言--Day42--LM检验
  • 异地组网
  • 数据分析框架和方法
  • Mac电脑,休眠以后,发现电量一直在减少,而且一个晚上,基本上是没了,开机都需要插电源的简单处理
  • 卫星通信终端天线的5种对星模式之二:功率检测型载波跟踪
  • 【PyTorch】PyTorch中数据准备工作(AI生成)
  • 深度学习——损失函数
  • Hexo + Butterfly + Vercel 完整个人Blog部署指南
  • Flask3.1打造极简CMS系统