🔷 第一章 初识C++
📄 一句话概括

C++ 的履历分四段:1979 年贝尔实验室的 Bjarne Stroustrup 给 C 语言加上"类",取名 C with Classes;1983 年改名 C++(++ 是自增运算符,意思是"C 的升级版");1998 年发布第一个 ISO 标准 C++98,从此有了"官方语法书";2011 年的 C++11 拉开"现代 C++"序幕(auto、lambda、智能指针),此后基本每三年一版(14/17/20/23),一直在长身体。

一、四段履历

年份 事件 为什么重要
1979 C with Classes 诞生于贝尔实验室 C 语言快但"组织能力"弱:项目一大,函数和全局变量互相牵连,改一处崩一片。Stroustrup 想给 C 加"类"——把数据和操作捆在一起
1983 更名 C++ ++ 是 C 里的自增运算符(i++ 表示 i 加 1)。C++ ="比 C 多一点"——名字本身就是一句自嘲式的幽默
1998 C++98,第一个 ISO 标准 之前各编译器"方言"不同,代码换台机器就编不过。有了国际标准,一套代码到处能编(1.1.3 的"跨平台"从此有了底气)
2003 C++03 小修订版,修 C++98 的错漏,不算大版本
2011 C++11,现代 C++ 起点 变化之大被戏称"像一门新语言":auto 自动推断类型、lambda 匿名函数、智能指针(自动管内存)、多线程库
2014/2017/2020/2023 C++14/17/20/23…… 定下三年一版的节奏,每版加新特性、修补丁

二、从这段历史能读出什么

  1. C++ 不是"设计出来的",是"长出来的"——它从 C 上改良,所以保留了 C 的全部风格(1.1 说的"超集")。这也解释了为什么它"什么都能干,但什么都得自己选"
  2. 标准是分水岭——1998 年之前,写 C++ 是"看编译器脸色";标准化之后,写 C++ 才是写"C++"
  3. C++11 是另一个分水岭——所以你在网上看到"现代 C++"这个词,指的就是 C++11 及以后的写法;而很多老教材、老代码还是 C++98 风格(本课以教材主线为准,先学通用写法)
  4. ++ 的小知识——现在你也能读懂"C++ 程序员"这个梗了:C++ 之后还有 C--?不存在的,语言只会向前。

三、关于"版本"的实用提醒

四、动手 Demo:在电脑里找"C++ 的年龄"

C++ 运行库的文件名里藏着版本号,顺便验证一下"C++ 无处不在":

Get-ChildItem C:\Windows\System32 -Filter "msvcp*.dll" | Select-Object Name, LastWriteTime | Sort-Object Name

看到什么算成功:列出 msvcp140.dll、msvcp140_1.dll 之类的文件。名字里的 140 就是 Visual C++ 运行库的版本代号——它对应的是 VS 2015 及以后(VS2015/2017/2019/2022 共用同一代运行库)。一台普通 Windows 上躺着几十个不同年代的 C++ 运行库,就是这段历史在你硬盘里的化石。

30 秒实验:打开记事本,写下 i++ 和 ++i,猜猜它们的区别——第三章学运算符时会揭晓。这就是"C++"名字里那两个加号。

五、常见误区

  1. "必须学最新版本"——入门先学通用语法,它在 C++98 到 C++20 上都成立;Dev-C++ 自带编译器偏老,不影响打基础
  2. "C++98 的老代码没法看"——能看。老代码只是没有 auto、lambda 这些新写法,语法主干一模一样;读老代码反而能看清"C++ 原本长什么样"
  3. "标准是某家公司定的,说改就改"——由 ISO 委员会维护,提案、讨论、表决都公开(Herb Sutter 长期主持);每三年一版是计划不是突袭
  4. "1983 年就有的语言,肯定落后"——它 1998 年标准化、2011 年起定期大更新;年龄大的是"资历",不是"包袱"
自测三问(点开对答案) 1. C++ 名字怎么来的?——1983 年由 C with Classes 更名;`++` 是 C 的自增运算符,意为"C 的升级版"。 2. 三个关键年份?——1979 诞生(贝尔实验室,给 C 加类)、1983 更名 C++、1998 首个 ISO 标准 C++98;2011 的 C++11 开启现代 C++。 3. 怎么一眼看出"现代 C++"?——用 `auto`、`nullptr`、lambda 等 C++11 之后特性的就是现代写法;`#include ` 带 .h 的则是标准前的老代码。

相关笔记