C++语言基础5:构造函数
📅 2026/7/17 18:02:42
👁️ 次浏览
什么是构造函数构造函数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;不传参编译就会报错。
在检验检测TIC行业业务量持续激增的当下,海量检测单据、成套报告文档的审核核验工作,已然成为各大检测机构、企业质检板块及政企事业单位提质增效的核心卡点,传统依靠人工逐份校对、逐条核验、手动纠错的单据审核模式,不仅跟不上行…
📅 2026/7/17 18:02:42
1. 项目概述:为什么在 Linux 上亲手编译安装 Nginx,而不是直接apt install?Nginx、Linux、OpenSSL、zlib、PCRE——这五个词凑在一起,不是在查命令手册,而是在准备一场真实生产环境的“筑基仪式”。我干运维和中间件支…
📅 2026/7/17 18:01:41
1. 为什么选择Ubuntu作为笔记本电脑操作系统 作为一名从Windows转向Linux的老用户,我清楚地记得第一次在笔记本上安装Ubuntu时的忐忑。当时我的ThinkPad T470已经服役三年,Windows 10的自动更新和后台服务让这台商务本变得异常卡顿。在尝试过各种优化无效…
📅 2026/7/17 18:01:41
1. Windows 10 ARM版22H2概述 Windows 10 on ARM版本是微软为ARM架构处理器特别优化的操作系统版本。2024年10月更新的22H2版本带来了多项改进,特别是在ARM64(AArch64)架构下的性能和兼容性方面。这个版本支持包括教育版、企业版、专业版等多…
📅 2026/7/17 18:49:04
__hmulx2 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/c…
📅 2026/7/17 18:49:04
前几天有个做电力电子方向的学生问我:“老师,我做三相PWM整流器仿真时,电流总是控制不稳,特别是能量回馈工况下,系统直接发散。明明PI参数调了很久,为什么一到第四象限就崩?” 这个问题很典型。…
📅 2026/7/17 18:49:04
不少刚接触天禧Claw、OpenClaw本地养虾的用户会纠结设备选择,对比实测后能清晰发现,Macmini在龙虾AI全流程运行中存在不少先天短板:系统封闭、部署繁琐、多虾协同稳定性不足,很难适配国内用户批量自动化需求。想要一台原生适配整套…
📅 2026/7/17 18:49:04
玩本地龙虾AI、搭建OpenClaw智能体的朋友应该都有同感:AI任务越玩越多、智能体越开越丰富,设备内存瓶颈就越明显。很多入门迷你主机运存规格偏低,多任务并行极易闪退、卡顿、任务断线,严重影响自动化效率。对于长期深耕离线AI、需…
📅 2026/7/17 18:49:04
如何在5分钟内掌握Python PDF文本提取:pdftotext终极指南 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext
你是否经常需要从PDF文档中提取文本内容进行分析或处理?Python的pdftot…
📅 2026/7/17 18:48:04
1. 为什么选择用DeepSeek V4替换Codex的底座模型去年我在开发一个智能代码补全工具时,发现Codex的默认底座模型在复杂业务逻辑场景下表现不尽如人意。经过多次测试对比,DeepSeek V4在以下几个关键指标上展现出明显优势:代码补全准确率&#x…
📅 2026/7/17 0:00:32
1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…
📅 2026/7/17 0:00:32
在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。
对工程应用和在自己的图片上进行测试来…
📅 2026/7/17 0:00:32
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/17 2:37:27
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/16 21:45:29
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/17 15:13:18
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/17 6:11:34
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/17 15:13:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/17 2:40:57