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++ 长期应用于对延迟与吞吐敏感的场景:

领域典型用途
系统软件操作系统组件、设备驱动、嵌入式固件
实时与多媒体游戏引擎、物理模拟、音视频编解码
基础设施数据库、浏览器渲染、高频交易、编译器本身

代价是开发周期中需要关注编译选项、链接依赖与类型安全;初学者可先通过在线编译器验证小程序,再逐步配置本地工具链。

.cpp 源码 → 编译 / 链接 → 可执行程序 运行时由操作系统加载;无内置虚拟机逐行解释
C++ 程序在运行前完成编译;与 Java 字节码、Python 解释执行的路径不同。

标准与实现

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++ 程序。