C++ 是在 C 语言基础上发展而来的通用编程语言,由 Bjarne Stroustrup 于 20 世纪 80 年代在贝尔实验室开始设计。它在保留 C 的编译模型与系统级控制能力的同时,引入了类、引用、函数重载、模板等机制,使开发者既能编写贴近硬件的高性能程序,也能组织大型工程中的抽象与复用。本节说明 C++ 的定位、与 C 的关系及常见应用领域,为后续环境搭建与语法学习建立整体认识。
C++ 与 C 语言的关系
C++ 最初称为带类的 C(C with Classes),目标是让系统程序员在不必放弃 C 生态的前提下获得更好的数据抽象能力。今天绝大多数 C++ 编译器仍可将符合约束的 C 源码作为 C 模块编译,但 C++ 本身增加了命名空间、异常、RAII、标准模板库(STL)等独立特性,二者不宜混为同一门语言教学。
- 兼容层面:许多 C 标准库头文件在 C++ 中有对应的
cstdio、cstdlib等形式;面向对象的程序通常优先使用 C++ 标准库中的iostream、string、vector等组件。 - 差异层面:C++ 支持函数重载、引用类型、类与继承;
void*与泛型指针的规则、const语义、内存管理习惯均与 C 有所不同,后续章节将分别说明。
若已熟悉C 语言是什么,可将 C++ 理解为在同一编译与内存模型上扩展了抽象工具;若从零开始,下一节将直接在环境搭建与第一个程序中完成可运行的 Hello World。
编译型语言与性能取向
与 Python 等解释型语言不同,C++ 源码通常经编译器生成机器码或目标文件,再链接为可执行程序。这一路径减少了运行时解释开销,使 C++ 长期应用于对延迟与吞吐敏感的场景:
| 领域 | 典型用途 |
|---|---|
| 系统软件 | 操作系统组件、设备驱动、嵌入式固件 |
| 实时与多媒体 | 游戏引擎、物理模拟、音视频编解码 |
| 基础设施 | 数据库、浏览器渲染、高频交易、编译器本身 |
代价是开发周期中需要关注编译选项、链接依赖与类型安全;初学者可先通过在线编译器验证小程序,再逐步配置本地工具链。
标准与实现
C++ 由 ISO 标准化,常用称谓包括 C++11、C++14、C++17、C++20、C++23 等。编译器(GCC 的 g++、Clang 的 clang++、MSVC 等)对标准的支持程度可通过官方文档查询。本教程示例默认按较常见的 C++17 习惯编写,并在需要时注明与旧标准的差异。编译器版本号与语言标准不是一回事:例如 g++ 14 表示 GCC 14,并不是 C++14;g++ 11 及更新版本(含本站在线编译器使用的 g++ 14)对 C++17 支持完整,用来学习本教程没有实质限制。若不写 -std,g++ 14 的默认语言模式也是 C++17(gnu++17)。需要更新标准时再显式指定,例如 -std=c++20。
- C++11:智能指针、
auto、enum class、移动语义等现代特性的集中引入。 - C++17 及以后:
std::optional、filesystem(C++17)、ranges(C++20)等逐步丰富标准库。
Java、C# 等语言同样支持面向对象与泛型;C++ 的模板在编译期实例化,错误多在编译阶段暴露,与运行时泛型擦除的模型不同,这一点在模板章节会进一步说明。
本节说明了 C++ 的来源、与 C 的分工、性能取向及标准版本概念。下一节介绍如何在本站或本地运行第一个 C++ 程序。