C++ 语言简介
在动手装环境之前,我们先认识一下 C++ 到底是什么、为什么值得学、能用它做什么。理解了背景,学习的时候会更有的放矢。
C++ 是什么?
C++ 是丹麦计算机科学家 Bjarne Stroustrup 在 1979 年于贝尔实验室(Bell Labs)开始设计的一门静态编译型语言。它最早叫 "C with Classes"(带类的 C),顾名思义就是在 C 语言基础上加了"类"这个面向对象特性。1983 年正式更名为 C++,1985 年第一个商用版本发布。
名字里的 ++ 是 C 语言的自增运算符——意思是"C 的进阶版"。这是 Bjarne 的一个英式幽默。
诞生背景:用 C 的性能写 Simula 的抽象
故事要从 Bjarne 的博士论文说起。他在剑桥大学写论文时用了 Simula 语言——世界上第一门面向对象语言(类、继承、虚函数都是它发明的)。Simula 写大型程序非常优雅,但运行慢得让人崩溃:编一个 200 行的程序,编译要几分钟,跑起来还卡。后来他到贝尔实验室做分布式系统,改用 C 语言,发现 C 飞快,但写复杂业务逻辑非常痛苦——没有类、没有真正的抽象。
于是他灵机一动:能不能在 C 的基础上,加上 Simula 的面向对象特性,保留 C 的性能?这就是 C++ 的雏形。设计目标可以总结为四点:
- 性能与 C 媲美——零成本抽象(abstraction that doesn't cost runtime)。
- 完全兼容 C——你现有的 C 代码可以直接编译运行。
- 支持面向对象——封装、继承、多态,组织大型程序。
- 支持泛型编程——模板(template),写出"任意类型"的通用代码。
C++ 的核心特点
- 静态类型 + 编译型:编译期检查类型,运行性能极高,接近 C。
- 多范式:同时支持过程式(像 C)、面向对象(像 Java)、泛型(模板)和函数式(lambda)。
- 零成本抽象:你用的高级特性(类、模板、内联函数)在运行时几乎不带来额外开销。
- 直接操作内存:可以拿到指针、控制字节布局,适合写底层。
- 无 GC:内存手动管理(现代 C++ 用智能指针已经大大缓解)。
- 跨平台:支持几乎所有 CPU 和操作系统。
- 标准化:ISO 维护,版本有 C++98/03/11/14/17/20/23。C++11 是分水岭,引入了 auto、智能指针、lambda、range-for,被称作"现代 C++"的起点。
第一个 C++ 程序
说了这么多,先看一眼代码。C++ 的"Hello World"长这样:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
// 输出: Hello, World!逐行解释:
iostream是 input/output stream 的缩写,C++ 标准库里的输入输出头文件,类似 C 的stdio.h。using namespace std:把标准库名字空间 std 引入,后面写cout而不用写std::cout。教程里图省事会用,生产代码推荐显式加std::前缀。cout(see-out):字符输出流,把右边的内容"塞"到输出里。<<是插入运算符。endl(end line):换行并刷新缓冲区。也可以用换行字符串字面量替代,更快。return 0:返回 0 表示程序正常结束(C++ 标准要求 main 返回 int)。
C++ 比 C 多了什么?一个小例子
同样打印"姓名+年龄",C 和 C++ 的写法对比:
// C 风格:需要指定格式符,类型不匹配会输出乱码甚至崩溃
printf("name=%s age=%d\n", name, age);
// C++ 风格:自动推断类型,安全
cout << "name=" << name << " age=" << age << endl;差别一目了然:C++ 不需要操心格式符(%s、%d)与变量类型一一对应——这是 C 程序员常踩的坑(类型不匹配会输出乱码甚至崩溃)。C++ 的 cout 通过运算符重载自动推断类型。
C++ 都用在哪?典型应用场景
C++ 是"性能敏感型"领域的首选。下面这些明星项目都是 C++ 写的:
- 游戏引擎:Unreal Engine、Unity(底层)、CRYENGINE、自家引擎(网易、腾讯、米哈游等)。
- 操作系统:Windows 内核大量 C++、macOS 部分核心、Chrome OS。
- 浏览器:Chrome(V8 引擎+渲染)、Firefox、Safari 的 JavaScriptCore。
- 数据库:MySQL、MongoDB、Redis(主要 C,部分 C++)、SQLite(C)。
- AI 框架:TensorFlow、PyTorch、Caffe 的底层。
- 图形与渲染:OpenGL、Vulkan、OpenCV、Photoshop、Maya。
- 高频交易/量化:几乎所有量化交易系统底层。
- 嵌入式:汽车电子、无人机、IoT 设备。
- 编程语言:很多语言本身用 C++ 实现(PHP、Python 解释器 CPython 主体 C、Julia 部分)。
简单说:需要极致性能、需要直接操作硬件、需要复杂抽象的场景,C++ 几乎不可替代。
C++ vs 其他语言
- vs C:C++ 是 C 的超集(99% 兼容),多了类、模板、异常、STL。C 适合写小而精的内核,C++ 适合写大型系统。
- vs Java:C++ 无 JVM,编译成原生代码,性能更高;但 Java 有 GC、跨平台更彻底。C++ 适合底层,Java 适合企业后端。
- vs Python:C++ 性能是 Python 的几十倍,适合性能关键路径;Python 写起来快,适合数据科学、脚本。
- vs Rust:Rust 是 C++ 的现代挑战者,内存安全做得更好(无 GC 但无段错误),但生态仍在追赶。
- vs Go:Go 简单、并发顺手,适合后端微服务;C++ 强大、性能极致,适合底层与游戏。
该不该学 C++?
如果你的方向是游戏开发、图形、嵌入式、AI 底层、数据库、量化交易、操作系统,C++ 几乎是必修课。学完本系列,你将能独立用 C++ 写一个完整的命令行工具、读懂 STL 源码、理解绝大多数 C++ 项目代码。
即便你最终工作不用 C++,学好它也能让你更深刻地理解内存、性能和抽象——这些是任何高级语言都不会教你的。
← 返回 C++ 教程目录
下一篇 C++ 环境搭建 →