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

【C++ 笔记】从 C 到 C++:核心过渡

【C 笔记】从 C 到 C核心过渡这是一篇系统、实用的过渡指南帮助熟悉 C 语言的开发者快速掌握 C 的核心差异与现代特性。C 被誉为“带类的 C”C with Classes它几乎完全兼容 CC 是 C 的超集但新增了面向对象OOP、泛型编程、更强的类型安全和现代标准库让代码更安全、更优雅、更易维护同时保留 C 的高效与底层控制力。C 不是“换个语法”的 C而是多范式语言过程式 OOP 泛型 函数式。建议先把 C 当作“更好的 C”来用逐步引入新特性。1. 为什么从 C 过渡到 C兼容性绝大多数合法 C 代码可直接作为 C 编译用g编译.c文件也行但推荐后缀.cpp。优势更严格的类型检查减少隐式转换错误。自动内存管理机制RAII。标准库STL极大提升生产力。支持大型项目维护封装、继承、多态。适用场景系统编程、游戏引擎、嵌入式、高性能计算、竞赛编程等。C 更适合极致轻量或纯过程式场景。编译器推荐GCC/Clangg -stdc20、MSVC。现代 C 强烈建议用C17 或 C20标准。2. 第一个程序Hello World 对比C 风格兼容#includestdio.hintmain(){printf(Hello, World!\n);return0;}C 现代风格#includeiostreamintmain(){std::coutHello, World!std::endl;return0;}差异头文件C 用stdio.hC 推荐iostream无.h。输入输出printf/scanf→std::cout/cin自动类型推导支持运算符重载。std::命名空间避免全局命名冲突。使用命名空间简化usingnamespacestd;// 不推荐在头文件中使用coutHelloendl;3. 核心语法与特性差异C → C(1) 输入输出与命名空间NamespaceC 无命名空间容易全局冲突。C 用namespace解决namespaceMySpace{intx10;voidfunc(){}}// 使用方式MySpace::x;// 指定访问usingMySpace::func;// 部分展开usingnamespaceMySpace;// 全部展开小心冲突(2) 函数增强默认参数Default Argumentsvoidprint(inta,intb0){// b 默认值为 0// ...}print(5);// 等价于 print(5, 0)注意默认参数必须从右到左连续定义。函数重载Overloading同名函数参数个数/类型/顺序不同返回值不影响voidfunc(intx){}voidfunc(doublex){}voidfunc(intx,inty){}inline 函数建议编译器内联展开减少函数调用开销C99 也有但 C 更常用。引用Reference别名更安全替代指针。voidswap(inta,intb){// 传引用无需指针inttempa;ab;btemp;}(3) 类型系统与常量bool 类型C 原生true/falseC 中常用int。nullptr代替 C 的NULL避免宏问题。constC 中const更严格常用于常量表达式。类型别名typedef→usingC11更灵活usinglllonglong;(4) 内存管理Cmalloc/calloc/realloc/free不调用构造函数。Cnew/delete自动调用构造函数/析构函数。int*pnewint(10);// 初始化deletep;int*arrnewint[5]{};// 数组 值初始化delete[]arr;现代 C 强烈推荐智能指针RAII避免内存泄漏#includememorystd::unique_ptrintupstd::make_uniqueint(42);std::shared_ptrintspstd::make_sharedint(100);(5) 结构体 vs 类ClassCstruct仅数据成员。Cstruct/class几乎相同默认访问权限不同struct publicclass private。支持封装、构造函数/析构函数、成员函数classPoint{private:intx,y;public:Point(inta0,intb0):x(a),y(b){}// 构造函数~Point(){}// 析构函数voidshow()const{/* ... */}};核心 OOP封装private/protected/public继承class Derived : public Base多态虚函数virtual 重写overrideC11(6) 其他重要差异类型转换C 更安全static_cast、dynamic_cast、const_cast、reinterpret_cast。void指针*C 不能隐式转换为其他指针类型更严格。枚举C11enum class强类型枚举。初始化C 支持列表初始化{}uniform initializationC11。4. 现代 C 核心特性C11 及以后——“新语言”级提升C11 被誉为“现代 C”起点后续 C14/17/20/23 持续演进auto 类型推导autox5;// intautovstd::vectorint{1,2,3};范围 for 循环Range-based forfor(autoelem:vec){/* ... */}Lambda 表达式匿名函数autoadd[](inta,intb){returnab;};std::sort(vec.begin(),vec.end(),[](inta,intb){returnab;});移动语义Move Semantics 右值引用高效转移资源避免不必要拷贝。智能指针、std::array、std::tuple等。constexpr编译期计算。线程支持thread、原子操作、异常处理try/catch。STL 容器与算法远超 C 的手动实现std::vector动态数组、std::string、std::map、std::unordered_map等。算法std::sort、std::find、std::accumulate。5. 最佳实践与注意事项过渡期避坑从“更好 C”开始先用cout、vector、string再学类。避免裸new/delete用智能指针、全局using namespace std;头文件、C 风格数组优先std::array或vector。性能C 零开销抽象Zero-overhead principle用好 RAII 和移动语义可比 C 更快。编译选项-stdc20 -Wall -Wextra -O2。常见错误忘记delete[]或析构函数。隐式转换导致 bugC 更严格。多线程下共享数据未同步。自定义类型作为 key需重载operator或提供哈希函数。6. 学习路径建议掌握基础过渡本笔记内容→ 写小项目如学生管理系统。深入 OOP STL。现代 C读《Effective Modern C》、《C Primer》第 5 版及以后。实践LeetCodeC、实现简单数据结构、贡献开源。进阶模板元编程、并发、C20 模块Modules、协程、Ranges。通过以上过渡你会发现 C 代码更简洁、安全且在大型项目中维护性远超纯 C。C 不是取代 C而是让 C 程序员拥有更强大的武器。如果需要具体章节扩展如类与继承详解、STL 容器对比、现代 C11/14/17/20 特性代码示例、或某个项目的完整过渡案例随时告诉我加油掌握 C 后你的编程视野会打开新世界。参考常见 C/C 对比资料与现代标准演进实践时以编译器实际行为为准。

相关文章:

【C++ 笔记】从 C 到 C++:核心过渡

【C 笔记】从 C 到 C:核心过渡 这是一篇系统、实用的过渡指南,帮助熟悉 C 语言的开发者快速掌握 C 的核心差异与现代特性。C 被誉为“带类的 C”(C with Classes),它几乎完全兼容 C(C 是 C 的超集&#xff…...

【最全】2026年OpenClaw(Clawdbot)京东云3分钟安装及使用流程

【最全】2026年OpenClaw(Clawdbot)京东云3分钟安装及使用流程。OpenClaw是什么?OpenClaw能做什么?OpenClaw怎么部署?OpenClaw(前身为Clawdbot/Moltbot)作为开源、本地优先的AI助理框架&#xff…...

LeetCode第八题无重复字符的最长字串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。示例 1:输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。示例…...

探索基于反向策略的麻雀搜索算法

基于反向策略的麻雀搜索算法:通过不断的生成候选位置、评估选择最佳位置、放置麻雀、回溯等步骤,逐步扩展棋盘状态,寻找解决麻雀问题的最优解。 (内附改进原理文档,包您看懂,有意咨询,非诚勿扰) 基于反向策…...

基于主从博弈的社区综合能源系统分布式协同优化运行策略探索

基于主从博弈的社区综合能源系统分布式协同优化运行策略 平台:Matlabyalmipcplex 随着能源市场由传统的垂直一体式结构向交互竞争型结构转变,社区综合能源系统的分布式特征愈发明显,传统的集中优化方法难以揭示多主体间的交互行为。 该文提出…...

联想人工智能岗面试题精选:10道高频考题+答案解析(附PDF)

联想简介 联想是全球领先的智能设备和服务提供商,业务涵盖PC、服务器、存储、网络设备等硬件产品,以及云计算、人工智能、物联网等前沿技术领域。在人工智能方向,联想聚焦边缘计算、计算机视觉、自然语言处理等技术研发,致力于将AI能力融入硬件产品和行业解决方案。面试风…...

AI专著写作新突破!借助工具,短时间打造专业学术专著

学术专著的主要价值在于其内容的系统性与逻辑性闭合,但这一点也是写作中最难以攻克的挑战。与聚焦单一问题的期刊论文不同,专著要求构建包括绪论、理论基础、核心研究、实际应用、结论的全面框架,各个章节必须层层递进、前后呼应,…...

**发散创新:PyTorch中算子融合的实战优化与性能跃迁**在深度学习

a发散创新:PyTorch中算子融合的实战优化与性能跃迁 在深度学习模型推理阶段,算子融合(Operator Fusion) 是提升执行效率的核心技术之一。它通过将多个小算子合并为一个复合算子,减少内存访问、降低调度开销&#xff0c…...

Python-flask小程序 电子书阅读器系统的含章节3_lmi7c-vue

目录需求分析与功能设计技术栈选型与搭建核心功能实现路径前后端交互设计部署与优化方案测试与迭代计划项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与功能设计 明确电子书阅读器的核心功能…...

基于OpenSEES平台的单柱墩模型:考虑滑移粘接捏缩效应

基于opensees 平台建立的单柱墩模型 考虑了滑移粘接的捏缩效应 内容包括有 1.墩柱模型建模全过程及源代码 2.钢筋混凝土之间的粘接滑移 3.基于位移控制的滞回分析代码最近在搞结构工程的数值模拟,用到了OpenSEES这个强大的开源有限元平台。今天就和大家分享一下基于…...

接龙数列 、 子串简写 与 砍树

[蓝桥杯 2023 省 B]接龙数列 对于一个长度为 K 的整数数列:A1​,A2​,…,AK​,我们称之为接龙数列当且仅当 Ai​ 的首位数字恰好等于 Ai−1​ 的末位数字(2≤i≤K)。例如 12,23,35,56,61,11 是接龙数列;12,23,34,56 不…...

LangChain开发-执行器深入解析:协调模型、工具与记忆的运行时

一、AgentExecutor的角色 1.1 什么是AgentExecutor? AgentExecutor是Agent的运行时环境,负责: ┌─────────────────────────────────────────────┐ │ AgentExecutor 职责 …...

公交刷卡数据挖掘用户通勤时间

3.13给定一组 公交卡的刷卡数据记录,每条数据记录以下信息a.user_idb.station_idc.type: 上车or下车or进站or出站d.timestamp表示该次刷卡的时间问题:使用以上数据,如何挖掘用户的上班时间和下班时间?...

中专机电专业最实用的证书是什么?

前段时间和几位在制造企业工作的朋友聊天,他们提到一个现象:现在的工厂车间里,自动化设备越来越多,数控机床、工业机器人、智能生产线逐步普及。但真正能把这些设备用好、能处理设备产生的大量数据的人才,却不太好找。…...

智能科学与技术毕业设计2026开题指导

1 引言 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应用需求&#xff…...

分心走神的儿童注意力缺陷是什么?影响因素和应对策略有哪些?

儿童注意力缺陷的概念与特征详解 儿童注意力缺陷,通常被称为ADHD(注意力缺陷多动障碍),是一种影响儿童学习和日常生活的常见神经发育障碍。ADHD的主要特征包括持续的注意力不集中、冲动行为和过度活动。这些症状不仅会妨碍孩子在学…...

拒绝Python依赖!SpringBoot 3 + ONNX Runtime 打造纯Java版YOLOv8通用检测服务:从模型转换到高并发API封装的全链路实战

前言 “部署个AI模型,还得在服务器上装Python环境、配Conda、解决各种pip依赖冲突?” “Java后端调用Python脚本,进程间通信(IPC)慢如蜗牛,高并发下线程池直接爆满?” “运维同事抱怨&#xff1…...

Scholar-Agent:你的全自动文献调研工具

全网自动“捞”论文:你不再需要手动在 arXiv、谷歌学术和本地 Zotero 之间切换。它会自动理解你的意图,同步从云端(最新论文)和本地(你收藏过的论文)进行海量搜索。 告别“论文标题党”:避免大…...

探索 BP 神经网络 PID 控制在 Simulink 中的仿真之旅

bppid BP神经网络 PID控制 simulink仿真 基于S函数.m文件的BP神经网络 可以运行出结果,有说明文档跟对应文章,包括一篇基于bppid的无刷直流电机控制的本科论文,很容易看懂。 描述真实。在控制领域,BP 神经网络与 PID 控制的结合总…...

Python-flask基于微信小程序的学生运动打卡交流系统的设计与实现

目录项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作项目技术支持 前端开发框架:vue.js 数据库 mysql 版本不限 数据库工具:Navicat/SQLyog/ MySQL Workbench等都可以 后端语言框架支持&am…...

算法入门(一):什么是算法?

# 算法入门(一):什么是算法?## 什么是算法?算法就是**解决问题的方法**,就像做菜的菜谱。## 算法的重要性- 💼 **面试必考** - 大厂面试手撕代码- 🧠 **锻炼思维** - 解决问题更高效…...

2026年10款热门降AI率工具全测评,轻松搞定论文降AI难题(持续更新)

2026年10款热门降AI率工具全测评,轻松搞定论文降AI难题(持续更新) 学弟学妹们先别慌!是不是刚用AI写完论文,兴冲冲去查AIGC率,结果直接飙到90%?导师还在催稿,心态瞬间崩了有没有&…...

怎么把claude code的claude模型的url和key永久设置成自己的

每次打开终端都要手动输入 export 确实非常繁琐。要让这些配置永久生效,你需要将 export 命令写入到你电脑终端(Shell)的默认配置文件中。这样,每次打开新的终端窗口时,系统都会自动为你加载这些变量。 以下是针对 mac…...

Simpack轨道之波磨不平顺设置那些事儿

simpack轨道,波磨不平顺设置,不提供教程。最近在研究Simpack轨道相关的内容,其中波磨不平顺设置这块还挺有意思的,今天就来跟大家聊聊。 波磨不平顺对轨道系统的影响 在轨道交通领域,波磨不平顺可不是个小问题。简单来…...

【2025最新】基于SpringBoot+Vue的扶贫助农系统管理系统源码+MyBatis+MySQL

系统架构设计### 摘要 在乡村振兴战略的推动下,扶贫助农工作成为社会关注的焦点。传统的扶贫管理方式存在信息不透明、效率低下等问题,亟需通过信息化手段提升管理效率和服务质量。扶贫助农系统通过整合资源、优化流程,实现帮扶信息的精准传递…...

从零到一:我设计了一个抗量子计算的哈希函数 REV-512

引言 你有没有想过,如果量子计算机真的问世,现在保护我们网络安全的密码算法会不会瞬间失效? 这不是科幻电影的情节。Grover算法可以将SHA-256的原像攻击复杂度从2⁵⁶降至2⁸——虽然今天这仍是天文数字,但量子计算的进步正在不…...

SourceTree 推送后修改commit message

目录一. 情景说明二. 修改最后一次commit时的message三. 修改指定提交的commit message一. 情景说明 🔷如下图所示,在自己的分支上将代码推送到远程仓库之后,发现代码commit时写的注释不对,需要修改。 💥注意&#xf…...

【Win11】受不了Win11右键菜单老是要多点一下?一招变回Win10经典样式

前言 刚换Win11的朋友,最烦的是不是右键菜单?以前在Win10上右键一下啥都能看到,现在要点“显示更多选项”才能找到想要的(比如解压缩文件),多了一步操作,每天要烦几十次。 其实改回Win10的经典…...

三相整流器在不平衡工况下抑制直流侧二倍频波动控制及SVPWM应用

三相整流器 不平衡工况 抑制直流侧二倍频波动控制SVPWM 参数: 直流侧电压 750V 交流侧电压 220V 开关频率20kHz 在三相电网不平衡的工况下,稳定输出750V直流电压,且抑制二倍频波动,能实现单位功率因数控制。 波形质量好,可以自行修…...

【笔试真题】- 京东-2026.03.14-第二套

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 京东-2026.03.14-第二套 第二套比第一套更像标准机考。第一题是带两种资源约束的选择型动态规划,重点在于“先保证件数最多,再在这些方案里取油耗最小”;第二…...