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

C++成员对象和封闭类

C++成员对象和封闭类详解

  在C++中,成员对象是指一个类的成员变量,它本身是另一个类的对象。封闭类是包含这些成员对象的类。理解两者的关系和行为,对于构造函数、析构函数、初始化顺序以及内存布局等方面的理解非常重要。


1. 成员对象和封闭类的基本概念

成员对象
  • 是一个类的成员变量,但类型是一个类。
  • 通常用于实现组合(composition)关系。
  • 在封闭类的生命周期中,成员对象的构造函数和析构函数被自动调用。
封闭类
  • 是包含成员对象的类。
  • 封闭类的构造函数负责调用成员对象的构造函数,析构函数负责调用成员对象的析构函数。

2. 成员对象的构造与析构

a. 构造顺序
  • 成员对象在封闭类的构造函数执行之前初始化。
  • 成员对象的初始化顺序与它们在类中声明的顺序一致,与初始化列表中的顺序无关。
#include <iostream>
class Member {
public:Member(int x) { std::cout << "Member Constructor: " << x << std::endl; }~Member() { std::cout << "Member Destructor" << std::endl; }
};class Container {Member m1;Member m2;
public:Container() : m2(20), m1(10) { // 初始化列表顺序与声明顺序不同std::cout << "Container Constructor" << std::endl;}~Container() {std::cout << "Container Destructor" << std::endl;}
}
http://www.lryc.cn/news/2384661.html

相关文章:

  • 【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答
  • PCB设计实践(二十五)贴片电阻与插件电阻的全面解析:差异、演进与应用场景
  • 知道不知道
  • 文章记单词 | 第106篇(六级)
  • SpringBoot项目中Redis的使用
  • Canvas设计图片编辑器全讲解(一)Canvas基础(万字图文讲解)
  • 利用Qt绘图随机生成带多种干扰信息的数字图片
  • STM32——从点灯到传感器控制
  • java day14
  • Tailwind css实战,基于Kooboo构建AI对话框页面(一)
  • 重塑数学边界:人工智能如何引领数学研究的新纪元
  • docker部署并测试翻译模型-CSANMT连续语义增强机器翻译
  • 蓝桥杯2025.5.23每日一题-儿童数
  • Spring Boot项目配置核心 - pom.xml的依赖管理与构建优化
  • 告别手抖困扰:全方位健康护理指南
  • 图解深度学习 - 特征工程(DL和ML的核心差异)
  • 《短线操盘跟庄关键技术》速读笔记
  • Datacom-hcia~Datacom-hcie学习笔记索引
  • Oracle 中 SHRINK 与 MOVE 操作的比较
  • 受不了github的网络限制了,我开源了一个图床工具 gitee-spring-boot-starter
  • 【Python 基础与实战】从基础语法到项目应用的全流程解析
  • 2025年医美行业报告60+份汇总解读 | 附 PDF 下载
  • API自动化与持续集成核心实战知识点!
  • 基于SpringBoot+Vue的社区医院信息平台设计与实现
  • C++ 中的暴力破解算法
  • 前端[插件化]设计思想_Vue、React、Webpack、Vite、Element Plus、Ant Design
  • 率先实现混合搜索:使用 Elasticsearch 和 Semantic Kernel
  • uni-app(4):js语法、css语法
  • 基于SpringBoot的网上租赁系统设计与实现
  • kafka吞吐量提升总结