发布时间:2026/7/17 18:02:41
C++语言基础5:构造函数
什么是构造函数构造函数Constructor是面向对象编程C/Java/C#等中一个极其特殊的成员函数。它的核心作用就是一句话用来“制造”并“初始化”一个对象。通俗地打个比方类Class相当于一张“建筑图纸”而构造函数就是“施工队”。当你写new Student()或Student s;时就是在喊“施工队开工”施工队负责把钢筋水泥内存搭建成一个可以住人的房子对象并给墙壁刷上底漆初始化数据。1. 构造函数的 3 个核心语法特征一眼辨认在 C 中构造函数必须满足以下条件否则就不是构造函数函数名必须和类名一模一样例如类叫Student构造函数就叫Student。没有返回值类型连void都不能写。在对象创建时被自动调用不需要你手动调用。2. 举个生活中的代码例子从原始到标准我们写一个管理学生成绩的类Student看看构造函数怎么用。场景一没有构造函数原始状态class Student { public: // 这里没有任何构造函数 char* name; int score; }; int main() { Student s; // 对象创建了但 name 指向垃圾地址score 是随机数比如 -858993460 // 如果此时直接输出 s.score程序可能崩溃或输出乱码 }结论没有构造函数对象里的数据是“野数据”非常危险。场景二写一个构造函数最常用写法我们把构造函数写在类里面用来给数据赋初始值。#include iostream #include cstring using namespace std; class Student { public: char name[50]; int score; // 【构造函数】 1. 名字和类名相同2. 没有返回值 Student(const char* n, int s) { cout 构造函数被调用了正在创建学生... endl; strcpy(name, n); // 把传入的名字复制进去 score s; // 把分数赋值为传入的 s } void show() { cout 姓名: name , 分数: score endl; } }; int main() { // 创建对象时直接传入参数构造函数会自动执行 Student s1(张三, 95); Student s2(李四, 88); s1.show(); // 输出姓名: 张三, 分数: 95 s2.show(); // 输出姓名: 李四, 分数: 88 return 0; }解释当你写Student s1(张三, 95);这一瞬间内存空间分配好了紧接着构造函数立刻执行把“张三”和“95”填进去。这样对象一诞生就是完好的杜绝了垃圾数据。场景三构造函数的重载多个构造函数一个类可以有好几个构造函数参数不同就像施工队可以有不同图纸。class Student { public: char name[50]; int score; // 构造函数 1有参构造传入全部信息 Student(const char* n, int s) { strcpy(name, n); score s; } // 构造函数 2无参构造默认构造不传参数 Student() { strcpy(name, 未知); score 0; cout 创建了一个默认学生 endl; } }; int main() { Student s1; // 自动调用无参构造函数输出创建了一个默认学生 Student s2(王五, 100); // 自动调用有参构造函数 }场景四使用“初始化列表”进阶对应你之前问的代码你提问中写的: QObject(parent)就是 C 特有的初始化列表。它是在进入构造函数大括号{}之前就把父类的属性给初始化好。class Student { private: int id; int age; public: // 冒号后面的就是初始化列表效率比在{}里赋值更高 Student(int student_id, int student_age) : id(student_id), // 直接将 student_id 赋给 id age(student_age) // 直接将 student_age 赋给 age { // 这里大括号里通常只写更复杂的逻辑比如连接数据库 cout 初始化列表已完成id id , age age endl; } };3. 再列举一段代码知识点串联这段THintsPlugin::THintsPlugin(QObject *parent) : QObject(parent) // -- 这是初始化列表先把父亲基类构造好 { m_initialized false; // -- 再给自己的孩子成员变量赋初值 }结合刚才的例子它的含义就是当外界创建THintsPlugin插件对象时必须带上一个parent指针。系统会先用这个指针把插件的“父亲”QObject构造好让父亲记住自己的主人是谁然后再执行大括号里的代码把插件自己的状态标记为“未初始化false”。4. 特别提醒非常重要的易错点不要手动调用构造函数s.Student(a,1);是绝对错误的语法。只有Student s(a,1);才能触发。如果不写任何构造函数编译器会自动给你生成一个空的默认构造函数什么也不做。但只要你自己写了一个带参数的构造函数编译器就不会再自动生成无参的了。这时你如果想Student s;不传参编译就会报错。

相关新闻

告别人工熬夜审单!IACheck AI报告审核批量核验提速80%,重塑检测行业效率标杆
2026/7/17 18:02:41

告别人工熬夜审单!IACheck AI报告审核批量核验提速80%,重塑检测行业效率标杆

在检验检测TIC行业业务量持续激增的当下,海量检测单据、成套报告文档的审核核验工作,已然成为各大检测机构、企业质检板块及政企事业单位提质增效的核心卡点,传统依靠人工逐份校对、逐条核验、手动纠错的单据审核模式,不仅跟不上行…

阅读更多
3分钟掌握QRemeshify:让Blender三角网格秒变规整四边形
2026/7/17 17:02:41

3分钟掌握QRemeshify:让Blender三角网格秒变规整四边形

3分钟掌握QRemeshify:让Blender三角网格秒变规整四边形 【免费下载链接】QRemeshify A Blender extension for an easy-to-use remesher that outputs good-quality quad topology 项目地址: https://gitcode.com/gh_mirrors/qr/QRemeshify 你是否曾为Blende…

阅读更多
从Google原版到MLX社区版:diffusiongemma-26B-A4B-it模型转换全解析
2026/7/17 17:02:41

从Google原版到MLX社区版:diffusiongemma-26B-A4B-it模型转换全解析

从Google原版到MLX社区版:diffusiongemma-26B-A4B-it模型转换全解析 【免费下载链接】diffusiongemma-26B-A4B-it-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/diffusiongemma-26B-A4B-it-bf16 diffusiongemma-26B-A4B-it-bf16是由MLX…

阅读更多
Windows屏幕保护程序(.scr)技术解析与开发实践
2026/7/17 19:02:41

Windows屏幕保护程序(.scr)技术解析与开发实践

1. .scr文件的前世今生:从CRT救星到现代装饰.scr文件作为Windows屏幕保护程序的标准格式,其发展历程堪称一部微型计算机显示技术进化史。上世纪90年代,当CRT(阴极射线管)显示器统治市场时,屏幕保护程序是每…

阅读更多
3分钟搞定!Windows微信QQ防撤回神器RevokeMsgPatcher完全使用指南
2026/7/17 19:02:41

3分钟搞定!Windows微信QQ防撤回神器RevokeMsgPatcher完全使用指南

3分钟搞定!Windows微信QQ防撤回神器RevokeMsgPatcher完全使用指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https:/…

阅读更多
37-WebView空白无错误-用加载账本和桥接握手定位
2026/7/17 19:02:41

37-WebView空白无错误-用加载账本和桥接握手定位

第37篇|WebView 空白无错误:用加载账本和桥接握手定位 摘要:WebView 空白最麻烦的是页面看起来没崩,也没有明确报错。实际问题可能在 URL、网络、证书、页面脚本、JSBridge 握手或容器尺寸。更稳的做法是给 WebView 加加载账本&am…

阅读更多
QRemeshify:Blender中实现专业级四边形网格优化的终极指南
2026/7/17 19:02:41

QRemeshify:Blender中实现专业级四边形网格优化的终极指南

QRemeshify:Blender中实现专业级四边形网格优化的终极指南 【免费下载链接】QRemeshify A Blender extension for an easy-to-use remesher that outputs good-quality quad topology 项目地址: https://gitcode.com/gh_mirrors/qr/QRemeshify 你是否厌倦了在…

阅读更多
36-推送点开走错页-用消息路由收件箱承接冷启动
2026/7/17 19:02:41

36-推送点开走错页-用消息路由收件箱承接冷启动

第36篇|推送点开走错页:用消息路由收件箱承接冷启动 摘要:推送点击最容易被写成“收到什么就跳哪里”。实际项目里,冷启动、前台点击、登录拦截、重复送达会让页面走错、详情打不开、登录后回不到目标页。更稳的做法是把推送 payl…

阅读更多
【Springboot毕设全套源码+文档】基于java的网吧管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
2026/7/17 18:02:41

【Springboot毕设全套源码+文档】基于java的网吧管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
智慧树刷课插件:5分钟实现自动化学习的智能助手
2026/7/16 21:32:43

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

阅读更多
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案
2026/7/16 15:03:34

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

阅读更多
办公自动化实战:5个免费工具构建合同处理流水线
2026/7/16 22:47:50

办公自动化实战:5个免费工具构建合同处理流水线

1. 这不是“又一个工具包”,而是一套经过237次真实场景验证的效率组合拳“2026.04.28实用教程工具分享”这个标题乍看平平无奇,像极了你邮箱里被自动归入“促销/订阅”文件夹的那类通知——但如果你真把它当普通更新忽略,接下来半年里&#x…

阅读更多
2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制
2026/7/17 0:02:36

2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制

2026全国外贸独立站搭建公司推荐排行 外贸工厂、工贸企业建设官网,核心需求与普通展示型网站并不相同。除了页面整洁、多语言适配和海外访问体验,企业还要重点考虑数据能否导出、站点能否迁移、源码是否可控、后续费用是否透明,以及更换服务…

阅读更多
HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式

Grid 布局实战——从功能 5 宫格到练习 22 模式引言 Grid 布局是 ArkTS 中最强大的布局容器之一,它通过行列模板系统实现灵活的多列多行布局。在本英语学习 App 中,Grid 布局贯穿了首页的多个核心模块:功能栏 5 宫格、练习模式 22 卡片、以及…

阅读更多
HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析

3D 翻转动画实现——ArkTS 动画系统全解析引言 在移动应用中,卡片翻转动画是最受欢迎的交互动效之一,它能给用户带来直观的"物理世界"操作感。在我们的英语学习 App 的单词学习页面(CourseHomePage.ets)中,就…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/17 5:10:40

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/17 5:34:11

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/17 7:48:38

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多