【C++藏宝阁】C++介绍:从发展历程到现代应用

【C++藏宝阁】C++介绍:从发展历程到现代应用
在这里插入图片描述


🌈个人主页:聆风吟
🔥系列专栏:C++藏宝阁
🔖少年有梦不应止于心动,更要付诸行动。


文章目录

📚专栏订阅推荐

专栏名称专栏简介
C++藏宝阁本专栏聚焦学习阶段核心知识点,深耕基础与实战,干货笔记持续更新,和大家共学共进,夯实编程功底。
数据结构手札本专栏主要是我的数据结构入门学习手札,记录个人从基础到进阶的学习总结。
数据结构手札・刷题篇本专栏是《数据结构手札》配套习题讲解,通过练习相关题目加深对算法理解。

一、初识 C++

在这里插入图片描述

C++ 是一门静态类型编译型的通用编程语言。它起源于 C 语言,由丹麦科学家 Bjarne Stroustrup 在贝尔实验室开发,早期被称为 “C with Classes”。作为 C 语言的拓展与升级,C++ 具备以下核心特征:

  • 高度兼容C:可直接复用绝大多数C语言的代码与库文件,保证了良好的生态延续性。
  • 支持多范式编程:不仅支持面向对象编程(通过类、继承、多态),还支持泛型编程(通过模板)和过程化编程,能灵活适配不同的开发场景与设计思想。
  • 强大的性能与控制力:凭借直接操作内存、高效的编译优化以及对底层硬件的操作能力,C++ 成为了对性能有极致要求领域的首选语言。
  • 丰富的现代特性:通过引入异常处理、命名空间、以及功能强大的 STL(标准模板库) 等,极大地提升了开发效率与代码质量。

正是这些特性,使得 C++ 能够在系统底层开发与高性能应用领域始终占据着不可替代的核心地位。

在这里插入图片描述

二、C++ 的发展历程与版本迭代

2.1 发展历程

第一阶段(1979 - 1983):从 C 到 “C with Classes”
C++ 的发展始于20世纪70年代末,其诞生源于对C语言功能扩展的需求 —— 当时C语言虽高效灵活,但在应对复杂大型项目时,缺乏模块化和代码复用的有效机制。1979年,丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)在贝尔实验室工作期间,开始着手在C语言基础上引入类(Class)概念,旨在结合C语言的高性能与Simula语言的面向对象特性,这一早期探索版本被命名为 “C with Classes”(带类的C),成为C++的雏形。

早期的C++代码示例:

// 早期的 "C with Classes" 代码classvector{int* p;int sz;public:vector(int s){ p =newint[sz = s];}// 构造函数~vector(){delete[] p;}// 析构函数int&operator[](int i){return p[i];}// 运算符重载};

第二阶段(1983-1998):命名确立与标准化奠基
1983 年,“C with Classes” 正式更名为 C++++取自 C 语言的自增运算符,寓意是 C 语言的增强版,同时新增虚函数、运算符重载、引用、常量等关键特性,解决了早期面向对象设计的诸多痛点。1985年,Bjarne Stroustrup 出版了《The C++ Programming Language》一书,系确立了 C++ 的核心语法规范,这是 C++ 首个权威参考手册,标志着 C++ 从实验室走向开发者社区。

20世纪90年代,C++进入快速发展期,大量企业和开发者参与到语言生态建设中,各类编译器(如GCC、Clang、MSVC)相继支持C++,相关的类库、开发工具也不断丰富。为解决不同实现版本之间的兼容性问题,标准化工作被提上日程,1998年,国际标准化组织(ISO)正式发布首个C++标准(C++98),标志着C++从一门实验性语言走向成熟规范的通用编程语言。此后,C++的发展始终围绕兼容历史代码提升开发效率适配新硬件场景三大核心目标,持续迭代优化。

C++98示例 - 标准化带来的变化

// C++98标准 正确使用示例(原写法C++11才支持)#include<vector>#include<algorithm>#include<iostream>intmain(){ std::vector<int> vec; vec.push_back(3); vec.push_back(1); vec.push_back(4); vec.push_back(1); vec.push_back(5); std::sort(vec.begin(), vec.end());// 算法库for(size_t i =0; i < vec.size();++i){ std::cout << vec[i]<<" ";}return0;}

2.2 版本迭代

C++ 的版本更新以国际标准化组织(ISO)发布的官方标准为核心节点,各版本均在保留向后兼容的基础上,针对性补充新特性、优化语法细节,核心版本如下:

时间阶段内容
1998年C++98C++官方第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
2003年C++03主要针对C++98标准中的语法漏洞和歧义进行修复,仅少量细节调整,目的是提升标准的严谨性和编译器实现的一致性,确保不同平台下的代码兼容性。
2011年C++11堪称 C++ 发展的里程碑式版本,被称为 “现代 C++ 的起点”。它彻底革新了 C++ 的开发体验,新增自动类型推导auto、Lambda 表达式、右值引用(移动语义)、智能指针shared_ptr/unique_ptr、基于范围的 for 循环等核心特性,既解决了 C++ 长期被诟病的内存管理繁琐问题,又大幅提升开发效率,让 C++ 摆脱 “老旧难用” 的标签。
2014年C++14基于 C++11 做细节完善,比如支持泛型 Lambda、函数返回值自动推导、新增std::make_unique,让 C++11 的特性用起来更顺手,没有颠覆性变化。
2017年C++17进一步补充实用特性,优化大型项目开发体验。核心更新:结构化绑定(可同时获取多个变量的值)、if constexpr条件编译增强、折叠表达式简化模板编程、文件系统库(std::filesystem)标准化,同时新增并行算法库,提升多线程编程效率。
2020年C++20继 C++11 后的又一重大更新,核心解决 C++ 的 “历史包袱”。引入模块(Modules)替代传统头文件,彻底解决头文件重复包含、编译慢的问题;新增概念(Concepts)约束模板参数,让模板错误提示更清晰;支持协程(Coroutines),适配高并发异步编程;还有范围库(Ranges),让容器操作更简洁,这四大特性让 C++ 向现代化语言又迈一大步。
2023年C++23以完善C++20特性、填补功能空白为主。主要更新:标准化网络库、增强协程功能、完善范围库与文件系统库,同时优化了数值计算相关的API,进一步提升语言的工业级应用能力。
在这里插入图片描述


本系列文章将核心聚焦于当前工业界应用最为广泛的C++98C++11两大标准。通过对这两大基石性标准进行扎实系统的学习,待基础筑牢、理解通透之后,再进一步涉猎 C++14、C++17、C++20 等后续更新特性,必将迎来水到渠成的提升,达到事半功倍的学习效果。


三、C++ 编程语言排行榜

TIOBE排⾏榜是根据互联⽹上有经验的程序员、课程和第三⽅⼚商的数量,并使⽤搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube和Baidu(百度)统计出排名数据,只是反映某个编程语⾔的热⻔程度,并不能说明一门编程语⾔好不好,或者一门所编写的代码数量多少。

2025年12⽉TIOBE发布的编程语言排行榜

在这里插入图片描述


在这里插入图片描述

四、C++ 在工作领域中的应用

C++的应⽤领域服务器端、游戏(引擎)、机器学习引擎、⾳视频处理、嵌⼊式软件、电信设备、⾦融应⽤、基础库、操作系统、编译器、基础架构、基础⼯具、硬件交互等很多⽅⾯都有。

  1. 大型系统软件开发:如编译器、数据库、操作系统、浏览器等等
  2. ⾳视频处理:常⻅的⾳视频开源库和⽅案有FFmpeg、WebRTC、Mediasoup、ijkplayer,⾳视频开发最主要的技术栈就是C++。
  3. PC客⼾端开发:⼀般是开发Windows上的桌⾯软件,⽐如WPS之类的,技术栈的话⼀般是C++和QT,QT 是一个跨平台的 C++图形用户界面(Graphical User Interface,GUI)开发框架。
  4. 服务端开发:各种⼤型应⽤⽹络连接的⾼并发后台服务。这块Java也⽐较多,C++主要⽤于⼀些对性能要求⽐较⾼的地⽅。如:游戏服务、流媒体服务、量化⾼频交易服务等
  5. 游戏引擎开发:很多游戏引擎就都是使⽤C++开发的,游戏开发要掌握C++基础和数据结构,学习图形学知识,掌握游戏引擎和框架,了解引擎实现,引擎源代码可以学习UE4、Cocos2d-x等开源引擎实现
  6. 嵌⼊式开发:嵌⼊式把具有计算能⼒的主控板嵌⼊到机器装置或者电⼦装置的内部,通过软件能够控制这些装置。⽐如:智能⼿环、摄像头、扫地机器⼈、智能⾳响、⻔禁系统、⻋载系统等等,粗略⼀点,嵌⼊式开发主要分为嵌⼊式应⽤和嵌⼊式驱动开发。
  7. 机器学习引擎:机器学习底层的很多算法都是⽤C++实现的,上层⽤python封装起来。如果你只想准备数据训练模型,那么学会Python基本上就够了,如果你想做机器学习系统的开发,那么需要学会C++。
  8. 测试开发/测试:每个公司研发团队,有研发就有测试,测试主要分为测试开发和功能测试,测试开发⼀般是使⽤⼀些测试⼯具(selenium、Jmeter等),设计测试⽤例,然后写⼀些脚本进⾏⾃动化测试,性能测试等,有些还需要⾃⾏开发⼀些测试⽤具。功能测试主要是根据产品的功能,设计测试⽤例,然后⼿动的⽅式进⾏测试。
在这里插入图片描述

📝全文总结

本文系统梳理了C++的发展脉络与应用价值:

  • 🚀 发展简史:从1979年“C with Classes”起步,到1998年首个国际标准C++98诞生,再到里程碑式的C++11引入现代特性,C++完成了从实验语言到工业标准的演进。
  • 📈 行业地位:常年稳居编程语言排行榜前五,证明了其在工业界不可替代的地位和持久需求。
  • 💼 广泛应用:在游戏开发、操作系统、嵌入式系统、音视频处理、金融服务等对性能要求极高的领域都是核心选择。
  • 🎯 学习路径:建议以C++98和C++11为起点,打好面向对象、模板、STL等基础后,再循序渐进学习后续版本新特性。

C++虽有一定学习曲线,但其带来的系统级编程能力和性能优化理解,将成为开发者宝贵的技术资产。

今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!

在这里插入图片描述

Read more

鸿蒙金融理财全栈项目——基础架构、数据安全、用户体验

鸿蒙金融理财全栈项目——基础架构、数据安全、用户体验

《鸿蒙APP开发从入门到精通》第17篇:鸿蒙金融理财全栈项目——基础架构、数据安全、用户体验 📊🔒🎨 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第17篇——基础架构、数据安全、用户体验篇,完全承接第16篇的鸿蒙电商购物车项目架构,并基于金融场景的高安全、高合规、高性能要求,设计并实现鸿蒙金融理财全栈项目的核心架构与用户体验基础。 学习目标: * 掌握鸿蒙金融理财项目的整体架构设计; * 实现高可用、高安全、高可扩展的金融级架构; * 理解数据安全在金融场景的核心设计与实现; * 实现数据加密、身份认证、安全审计; * 掌握用户体验在金融场景的设计与实现; * 实现无障碍设计、响应式布局、性能优化; * 优化金融理财项目的用户体验(安全性、响应速度、用户反馈)。 学习重点: * 鸿蒙金融理财项目的架构设计原则; * 数据安全在金融场景的应用; * 用户体验在金融场景的设计要点。 一、 金融理财项目架构基础 🎯 1.1 金融理财项目特点 金融理财项目具有以下特点: * 高安全:需要严格的数据加密和身份认证; * 高合规:

【OpenClaw 安装教程:Windows/macOS/Linux 全平台保姆级指南】

前言 OpenClaw(俗称"小龙虾")是一款开源的个人 AI 助手项目,由 PSPDFKit 创始人 Peter Steinberger 开发。与传统聊天 AI 不同,OpenClaw 不仅能回答问题,还能主动操作系统、访问网页、处理邮件、整理文件、发送消息等,真正实现"会动手干活的 AI"。 本文将详细介绍在 Windows、macOS 和 Linux 三大平台上安装 OpenClaw 的完整步骤,适合零基础用户快速上手。 一、安装前准备 1.1 系统要求 在开始安装之前,请确保你的电脑满足以下基本要求: 配置项最低要求推荐配置操作系统Windows 10/11、macOS

Flutter 三方库 http_client_interceptor 的鸿蒙化适配指南 - 实现原生 HttpClient 的全量请求拦截、支持端侧动态 Headers 注入与网络流量审计实战

Flutter 三方库 http_client_interceptor 的鸿蒙化适配指南 - 实现原生 HttpClient 的全量请求拦截、支持端侧动态 Headers 注入与网络流量审计实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 http_client_interceptor 的鸿蒙化适配指南 - 实现原生 HttpClient 的全量请求拦截、支持端侧动态 Headers 注入与网络流量审计实战 前言 在进行 Flutter for OpenHarmony 开发时,虽然我们常使用 dio 等高阶库,但仍有大量底层插件或遗留系统直接使用 Dart 原生的 HttpClient。如何在中途“截获”这些原生请求,以便统一添加鉴权 Token、日志审计或处理特定区域的网关重定向?http_client_interceptor 是一款专为原生 IO 库设计的拦截器插件。本文将探讨如何在鸿蒙端构建极致透明的网络治理层。 一、原直观解析 / 概念介绍 1.1 基础原理

Linux 动态链接与动态库加载深度解析

Linux 动态链接与动态库加载深度解析

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 进程如何感知并加载动态库 * 1.1 进程对动态库的 “可见性” * 1.2 多进程共享动态库的实现 * 二. 动态链接的核心工作原理 * 2.1 程序运行前的动态链接准备 * 2.2 动态库的地址无关性:PIC 编译 * 2.3 运行时的地址重定位:从符号到实际地址 * 三. GOT/PLT:动态链接的核心实现机制 * 3.1 全局偏移量表(GOT) * 3.2 过程链接表(PLT):延迟绑定优化 * 3.