C++: 认识C++

如果你问十个程序员"最难的语言是什么",至少有五个会说是 C++。但如果你问"性能最强、控制最细、能写底层系统的语言是什么",十个里十个会说 C++。这一课咱们不写代码,先把 C++ 这个人认识清楚——它是谁、从哪来、能干嘛、值不值得学。


1. C++ 是什么?

C++ 是一种编译型、静态类型、支持多范式的编程语言。说人话就是:

(1) 它和 C 的关系

C++ 是 C 的"超级升级版"——1983年丹麦程序员本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)在 C 语言基础上加了类(class),让 C 也能做面向对象编程。

💡 一句话记忆:C 能做的不管,C++ 都能做;C 不能做的(面向对象/泛型/模板),C++ 也能做。



2. 为什么学 C++?

理由 说明
性能天花板 C++ 编译后是直接跑在硬件上的机器码,没有虚拟机、没有解释器、没有垃圾回收——快到极致
控制力极强 内存怎么分配、CPU 缓存怎么用、指针怎么跳——你说了算
就业面广 游戏引擎、高频交易、嵌入式、自动驾驶、操作系统——都是 C++ 的天下
打牢基础 学完 C++,其他语言(Java/Python/Go)的"底层逻辑"你都懂
长期保值 C++ 问世40+年,依然在演进(C++23 刚出),不会过时

▶ 示例 1:Hello World(难度⭐)

CPP
#include <iostream>

int main() {
 std::cout << "Hello, C++ World!" << std::endl;
 return 0;
}
▶ 试一试

输出:

TEXT 📖 仅展示
Hello, C++ World!

运行结果:

TEXT 📖 仅展示
Hello, C++ World!
💡 提示:这是 C++ 的 "Hello World" 程序——所有编程语言入门第一课的传统。拆解一下:

  • #include <iostream> — 引入输入输出库(就像 Python 的 import
  • int main() — 程序入口(就像 Python 的 if __name__ == "__main__":
  • std::cout << "..." — 输出到屏幕(就像 Python 的 print()
  • return 0; — 告诉操作系统"程序正常结束"(0 表示成功)

▶ 示例 2:C++ 有多快?(难度⭐⭐)

CPP
#include <iostream>
#include <chrono>

int main() {
 // 用 chrono 高精度计时
 auto start = std::chrono::high_resolution_clock::now();
 
 // 跑10亿次空循环
 long count = 0;
 for (long i = 0; i < 1'000'000'000; i++) {
 count++;
 }
 
 auto end = std::chrono::high_resolution_clock::now();
 auto duration = std::chrono::duration<double>(end - start).count();
 
 std::cout << "10亿次循环耗时:" << duration << " 秒" << std::endl;
 return 0;
}
▶ 试一试

输出:

TEXT 📖 仅展示
10亿次循环耗时:0.5 秒
💡 提示:这段代码的 chrono 是 C++11 引入的时间库,精度到纳秒级。你暂时不用看懂,感受一下 C++ 的风格就好——#include 引入库、int main() 是程序入口、std::cout 输出、using namespace std; 可以避免每次写 std::



3. C++ vs C vs Python

维度 C C++ Python
类型 编译型 编译型 解释型
范式 面向过程 多范式(过程+OOP+泛型) 多范式(OOP+函数式)
内存管理 手动(malloc/free) 手动+智能指针(new/delete/unique_ptr) 自动(垃圾回收)
性能 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐
学习难度 ⭐⭐⭐ ⭐⭐⭐⭐⭐
典型应用 操作系统内核、驱动 游戏引擎、高频交易、浏览器内核 数据分析、AI、Web 后端
代码量
报错友好度 差(段错误?自己猜) 中(编译错误很严格) 好(报错信息清晰)

(1) 生活类比

⚠️ 注意:不是"Python 不好"——只是不同场景用不同工具。写 AI 训练脚本,Python 是王者;写游戏引擎,C++ 是无敌的。



4. C++ 标准演变

C++ 从诞生到现在,经历了多次标准更新。每次更新都加了一堆新功能,让 C++ 越来越好用。

年份 标准 别名 重要新特性
1998 C++98 第一个国际标准 模板、异常、RTTI
2003 C++03 小修补 bug 修复
2011 C++11 C++0x 重大更新auto、范围fornullptr、Lambda、shared_ptrthread、初始化列表
2014 C++14 小增强(make_unique、泛型 Lambda)
2017 C++17 结构化绑定、if constexpr、折叠表达式、string_view、文件系统库
2020 C++20 模块(Modules)、协程(Coroutines)、概念(Concepts)、Ranges
2023 C++23 std::printflat_map、增强模块化

(1) 本课程用什么标准?

C++17 —— 平衡了"新特性好用"和"编译器支持好"。

💡 提示:学 C++ 要接受一件事——它一直在变。你学的 auto 是 C++11 的,std::string_view 是 C++17 的。如果面试官问你"C++11 有哪些新特性",这是高频题。



5. C++ 能做什么?

C++ 的应用场景,用一句话总结就是:"性能要求极高、硬件控制极细、不能出错的地方"

(1) 场景一:游戏开发(最典型)

(2) 场景二:高频交易(最赚钱)

(3) 场景三:嵌入式与物联网(最广泛)

(4) 场景四:浏览器与数据库内核(最基础)

(5) 场景五:操作系统与驱动(最底层)



6. 常见应用场景


▶ 示例 3:简单的用户交互(难度⭐)

CPP
#include <iostream>
#include <string>

int main() {
    std::string name;
    int age;

    std::cout << "请输入你的名字:";
    std::cin >> name;

    std::cout << "请输入你的年龄:";
    std::cin >> age;

    std::cout << "你好," << name << "!明年你 " << (age + 1) << " 岁。" << std::endl;

    return 0;
}
▶ 试一试

输出:

TEXT 📖 仅展示
请输入你的名字:
请输入你的年龄:
你好,!明年你  岁。

运行效果:

TEXT 📖 仅展示
请输入你的名字:小明
请输入你的年龄:18
你好,小明!明年你 19 岁。
💡 提示:这个程序演示了 C++ 的基本输入输出——std::cin 从键盘读取用户输入,std::cout 输出到屏幕。std::string 是 C++ 的字符串类型,需要 #include <string>


❓ 常见问题

Q C++ 这么难,是不是不值得学?
A 值不值得看你的目标。做底层系统/游戏/高频交易/嵌入式→C++必学;做Web后端/数据分析/AI→Python/Java更合适。C++难但学会后你看其他语言的底层逻辑都是透明的。
Q C++ 和 Java 哪个难?
A C++ 更难。Java 有垃圾回收不用手动管理内存;C++ 要自己 new/delete,忘了就内存泄漏。但 Java 有虚拟机性能开销,所以游戏引擎/高频交易还是用 C++。
Q 学 C++ 之前要学 C 吗?
A 不需要。C++ 是独立语言可以直接学。先学 C 再学 C++ 会快(语法相似),反过来会觉得 C"原始"(没有类/模板/ std::string)。
Q C++ 的标准库(STL)是什么?
A STL(Standard Template Library)是 C++ 的武器库——容器(vector/map)、算法(sort/find)、迭代器。学完 STL 效率提升 10 倍,Phase 6 会深入讲解。

📖 小节


📝 作业

  1. 基础题 (Difficulty ⭐):去搜索引擎搜一下"用 C++ 写的知名软件/游戏/系统",列出至少 5 个,感受 C++ 的应用广度。

  2. 进阶题 (Difficulty ⭐⭐):你的电脑上装了 C++ 编译器吗?打开终端/命令行,输入 g++ --versionclang++ --version,看看有没有输出。如果没有,记下你的操作系统版本(Windows 10/11?macOS?Linux 哪个发行版?),下一课我们会教你怎么装。

  3. 挑战题 (Difficulty ⭐⭐⭐):C++ 有一个著名的"酒泉"——"只学 C++ 语法,不学计算机底层原理,等于白学"。搜索并阅读一篇关于"学 C++ 需要懂哪些计算机底层知识"的文章(推荐搜"学 C++ 要学计算机组成原理吗"),写一篇 200 字以内的读后感:你认为学 C++ 之前,需要先学 C 语言吗?为什么?

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏