如果说 C 语言教会你「计算机如何思考」,那 C++ 教会你的是「如何组织一个不断生长的程序」。这篇笔记写给刚接触 C++ 的朋友,目标是建立一张粗但不歪的知识地图:知道 C++ 是什么、能做什么、代码长什么样、该按什么顺序学。
一、C++ 是什么
C++ 诞生于 1979 年,本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)最初把它叫做「带类的 C」。它在 C 语言的基础上加上了面向对象、泛型编程和异常处理等能力,同时几乎完整保留了 C 的高性能与对硬件的直接控制力。
它最常见的出场位置:
- 游戏引擎:Unreal Engine、Cocos 等核心都是 C++ 写的;
- 操作系统与驱动:Windows、macOS 的大量系统组件;
- 高频交易与图形渲染:对延迟和帧率斤斤计较的地方;
- 嵌入式与物联网:资源受限但逻辑复杂的设备。
一句话理解 C++ 的定位:"它给你 C 的速度,再给你一整套管理大型工程的工具——代价是你需要学的东西变多了。"
二、第一个程序与编译流程
学习任何语言都从打招呼开始。C++ 的经典第一课:
#include <iostream> // 引入输入输出库
int main() {
std::cout << "Hello, 1024 Group!" << std::endl;
return 0; // 返回 0 表示程序正常结束
}
和 Python 不同,C++ 是编译型语言:源代码必须先翻译成机器码才能运行。以 g++ 为例:
g++ hello.cpp -o hello # 编译:把 hello.cpp 变成可执行文件 hello ./hello # 运行:输出 Hello, 1024 Group!
这背后其实有四个阶段:预处理 → 编译 → 汇编 → 链接。初学阶段只需知道「改完代码要重新编译」,遇到 undefined reference 之类的报错时,再回头研究链接是怎么回事。
三、变量与基本类型
C++ 是静态类型语言:每个变量都要先声明类型,编译器据此分配内存、检查错误。
int age = 20; // 整数 double score = 92.5; // 双精度浮点数 char grade = 'A'; // 单个字符 bool passed = true; // 布尔值 auto size = 10; // auto:让编译器自己推断类型(C++11 起)
初学者重点理解三件事:int 有取值范围(会溢出)、double 有精度误差(别用 == 直接比浮点数)、char 本质是小整数('A' 就是 65)。
四、流程控制与函数
程序不外乎「顺序 + 分支 + 循环」。C++ 的写法和 C 一致:
// 判断 1~100 中所有的偶数和
int sum = 0;
for (int i = 2; i <= 100; i += 2) {
sum += i;
}
if (sum > 2000) {
std::cout << "挺大的" << std::endl;
} else {
std::cout << "再算算" << std::endl;
}
把重复的逻辑封装成函数,是写出可维护代码的第一步:
// 函数:两数中的较大值
int maxOf(int a, int b) {
return (a > b) ? a : b; // 三目运算符
}
五、指针与引用:C++ 的第一道坎
这是大多数初学者卡住的地方,先用一张表建立直觉:
| 概念 | 写法 | 可以重新指向别人吗 | 可以为空吗 |
|---|---|---|---|
| 指针 | int* p = &x; | 可以 | 可以 |
| 引用 | int& r = x; | 不可以(绑定即终身) | 不可以 |
把指针理解成「存地址的变量」,把引用理解成「变量的别名」,九成的困惑会自动消失。现代 C++ 的建议是:优先用引用和智能指针,少裸 new/delete。
六、STL 初探:站在标准库肩膀上
STL(标准模板库)是 C++ 附送的「瑞士军刀」,会用了之后写代码效率翻倍。最常见的三件套:
#include <vector>
#include <string>
std::vector<int> nums = {3, 1, 4, 1, 5}; // 动态数组:自动扩容
nums.push_back(9); // 尾部追加元素
std::string name = "qlmfs"; // 字符串:不用手动管内存
name += " 1024";
后续还会遇到 map(键值对)、set(去重集合)、sort(排序函数)——它们和 vector 一样,都是模板,这正是「泛型编程」思想落地的地方。
七、学习路线建议
- 第一阶段:语法基础(变量、分支、循环、函数、数组),配合刷简单题;
- 第二阶段:指针与内存模型,手画内存图理解栈与堆;
- 第三阶段:面向对象(类、封装、继承、多态);
- 第四阶段:STL 与模板,开始写「像 C++ 的 C++」;
- 第五阶段:做一个完整的小项目(如控制台图书管理系统)收尾。
工具方面:编译器选 g++ / clang++ / MSVC 任一,编辑器推荐 VS Code + C++ 插件或 Visual Studio;调试一定要学 GDB 或 IDE 自带断点调试,会比看报错猜问题快十倍。
八、小结
C++ 体量大是真的,但入门并不需要「学完」。先把它当「带类的 C」用起来,再一点点解锁面向对象和 STL,最后碰模板元编程这些深水区。跑通第一个程序,永远是学会一门语言最诚实的一步。
