小学生学C++编程语法知识(C++类初始化详解(二))

发布时间:2026/9/23 4:18:14

小学生学C++编程语法知识(C++类初始化详解(二)) C类对象的创建过程从内存分配 → 成员初始化 → 构造函数 → 析构函数全过程目标理解“对象出生”的全过程理解构造函数为什么自动执行理解初始化列表为什么重要理解析构函数什么时候执行为后面学习继承、多态、虚函数打基础一、先问一个问题我们写Student s;到底发生了什么很多初学者认为“调用构造函数然后对象产生。”其实不完整。真正过程非常复杂Student s; ↓ 1. 给对象分配内存 ↓ 2. 初始化成员变量 ↓ 3. 执行构造函数 ↓ 4. 对象正式出生二、准备一个例子我们定义一个学生类#includeiostream using namespace std; class Student { public: string name; int age; Student() { cout构造函数执行endl; } ~Student() { cout析构函数执行endl; } };main:int main() { Student s; }运行输出构造函数执行 析构函数执行为什么我们一步一步分析。三、第一步给对象分配内存执行Student s;系统首先找到一块内存。例如栈空间 ---------------- | | | Student对象 | | | ----------------假设string name; int age;需要空间Student对象 ------------- | name | | age | -------------此时对象只是一个“空盒子”。注意这时候构造函数还没有执行四、第二步初始化成员变量接下来初始化name age对于string name;调用string默认构造函数产生name对于int age;如果没有初始化普通局部变量age 里面是随机值例如age32768所以此时Student对象 ------------- | name | | age? | -------------五、第三步执行构造函数现在进入Student() { cout构造函数执行; }输出构造函数执行如果里面写Student() { nameTom; age10; }那么执行nameTom age10最终Student ------------- | Tom | | 10 | -------------六、第四步对象出生完成此时对象才真正可以使用。例如couts.name;可以访问。所以完整流程Student s; ① 分配内存 ② 初始化成员 ③ 执行构造函数 ④ 对象创建完成七、为什么构造函数不是第一步很多孩子会问“为什么不先执行构造函数”原因构造函数也是一个函数。函数执行时需要对象已经存在。比如Student() { age10; }这里age必须已经有空间。否则你给谁赋值所以必须先有房子 ↓ 再装修房子八、成员初始化列表在哪里执行我们看class Student { string name; int age; public: Student() :name(Tom),age(10) { } };执行过程不是创建对象 ↓ 进入构造函数 ↓ 执行冒号错误真实分配内存 ↓ 初始化name (name直接变Tom) ↓ 初始化age (age直接变10) ↓ 进入构造函数{}也就是说初始化列表发生在构造函数函数体之前。九、构造函数里面有什么构造函数分两部分例如Student() :name(Tom),age(10) { couthello; }分为第一部分初始化列表:name(Tom),age(10)负责出生状态第二部分函数体{ }负责出生以后做事情类似孩子出生初始化姓名 年龄 性别构造函数哭 睁眼 吃奶十、对象什么时候死亡看int main() { Student s; }程序运行进入mainStudent出生执行构造函数然后main结束Student死亡执行析构函数输出构造函数执行 析构函数执行十一、析构函数是什么析构函数名字~类名()例如~Student() { }作用对象消失之前负责清理工作。比如对象里面申请了空间int *p; pnew int[100];对象死亡时需要delete []p;否则内存泄漏。十二、对象死亡顺序如果int main() { Student a; Student b; }出生a出生 ↓ b出生死亡反过来b死亡 ↓ a死亡口诀谁后出生谁先死亡。十三、多个成员对象的创建顺序看class Engine { public: Engine() { cout发动机endl; } }; class Car { Engine e; public: Car() { cout汽车endl; } };创建Car c;输出发动机 汽车为什么因为汽车里面有发动机。必须先制造发动机 ↓ 再制造汽车全过程Car对象分配空间 ↓ Engine成员初始化 ↓ Car构造函数十四、继承情况下更复杂例如class Animal { public: Animal() { cout动物endl; } }; class Dog:public Animal { public: Dog() { cout狗endl; } };创建Dog d;输出动物 狗为什么因为狗继承动物。出生必须先有父亲 ↓ 再有孩子十五、完整生命周期图一个对象的一生创建对象 ↓ 分配内存 ↓ 初始化成员 ↓ 执行构造函数 ↓ 对象工作 ↓ 离开作用域 ↓ 执行析构函数 ↓ 释放内存十六、C对象生命周期口诀同学们记出生先分配 再初始化 最后构造消亡先析构 再释放初始化列表先执行 函数体后执行十七、竞赛常考点总结知识点重要程度构造函数自动调用⭐⭐⭐⭐⭐析构函数自动调用⭐⭐⭐⭐成员初始化顺序⭐⭐⭐⭐⭐初始化列表执行时机⭐⭐⭐⭐⭐对象局部变量生命周期⭐⭐⭐⭐父类、成员、自己的构造顺序⭐⭐⭐⭐⭐十八、给同学们总结可以把对象想象成一个小机器人制造机器人 ↓ 安装零件 ↓ 开机初始化 ↓ 执行启动程序 ↓ 工作 ↓ 关机清理 ↓ 报废对应C分配内存 ↓ 成员初始化 ↓ 构造函数 ↓ 对象使用 ↓ 析构函数 ↓ 释放资源
延伸阅读

更多相关文章

2026/9/19 23:47:00

滑动中值滤波算法详解

1、什么是滑动中值滤波滑动中值滤波(Moving Median Filter),属于非线性滤波,非常适合去除信号里的脉冲噪声、尖峰毛刺、跳变干扰,广泛用于传感器数据、嵌入式 ADC 采样、图像去噪。核心思想:设置一个固定大…

2026/9/23 4:17:23

小学生学C++编程语法知识(C++类初始化详解(一))

C类初始化详解(一):很多同学第一次学习类(class)时,会觉得:“我创建一个对象,不就是给变量赋值吗?为什么还要学习构造函数、初始化列表?”其实,类…

2026/9/23 2:51:53

珍珠棉设备和普通发泡机的区别,关键在这里

为什么你的珍珠棉总是回弹性差、易碎裂? 你是不是也遇到过这种情况:采购的珍珠棉(EPE)片材看起来厚实,但一压就塌、回弹慢,甚至运输途中就碎成渣?很多厂家以为是原料问题,其实根源往…

2026/9/23 4:17:31

基于Python的TCP入侵检测系统:端口扫描与SYN Flood防御实战

简介:基于Python构建的TCP入侵检测系统,面向毕业设计、课程设计及网络安全方向项目开发。系统围绕TCP请求频率、SYN/FIN/NULL等flag标志位比例、未开放端口请求比例三项核心指标,可识别端口扫描、Dos攻击及爬虫行为,并联动iptable…

2026/9/23 4:17:31

SSM铁艺家居商城系统设计与实现——从数据库到前端全解析

最近帮人调了一个SSM版本的铁艺家居商城项目,标题写的是java_ssm11特色铁艺家居家具商城销售系统的设计与实现_idea项目源码,说白了就是一个典型的前后台单体Web应用:Spring管理对象和事务、SpringMVC负责请求分发、MyBatis处理数据库操作&am…

2026/9/23 4:17:31

AI Coder现状与Qwen Coder Mac本地部署实战指南

看到“coder”这个标题,你多半不是来寻找身份认同的——虽然程序员群体确实经常用这个词自称。最近一段时间,后台和社群里被问得最多的一批搜索词,基本就是“qwen coder mac 部署”“ai coder 代码生成现状”“coder咋下载”“kh coder”。这…

2026/9/23 4:17:31

构建安全审计Skill:AI编程助手时代的代码安全自动化实践

前阵子在给项目做代码审计的时候,我突然意识到一个问题:现在AI编程助手已经能帮我们写大部分业务代码了,但在代码安全这块,它们的能力其实相当不均衡——很多模型默认生成的代码,SQL拼接、反序列化、越权接口&#xff…

2026/9/23 4:12:31

模糊人脸图像增强实战:从物理退化建模到Django部署

简介:本资源是一套高分毕业设计项目——基于Python深度学习的模糊人脸图像增强系统,面向计算机类专业本科生及初阶AI学习者,解决低质量监控或抓拍人脸图像的清晰度重建问题,适用于毕设、课程设计、项目演示与深度学习实践入门。压…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码