C++(读作 "C Plus Plus")是一种通用的、多范式的编程语言,由 Bjarne Stroustrup 于 1985 年在贝尔实验室开发。C++ 是 C 语言的超集,在保留 C 语言性能和灵活性的基础上,增加了面向对象、泛型编程、函数式编程等特性。
C++ 的核心定位是 零成本抽象——提供高级编程抽象(类、模板、Lambda),但抽象不会带来运行时性能损失。编译时多态、内联展开、模板元编程等技术确保了 C++ 既能写出优雅的代码,又能保持 C 级别的性能。
C++ 的前身是 "C with Classes"(带类的 C),由 Bjarne Stroustrup 于 1979 年开始开发。Stroustrup 希望将 Simula 的面向对象特性与 C 的高效性能结合起来。1985 年,第一个商业版 C++ 正式发布。
<thread>)、范围 for 循环decltype(auto)<filesystem>)#embed、std::expected、std::mdspan、std::printint main()using namespace std; 或 std::coutstd::cin、std::cout、std::cerrclass Person { ... };class Student : public Personvirtual 虚函数 + 动态绑定virtual void func() = 0;public、protected、privatefriend 关键字Class()、~Class()C++ 的模板是编译时多态的基石,也是 C++ 最强大的特性之一。
template<typename T> T max(T a, T b)template<typename T> class Vectorstd::enable_if// 函数模板示例
template<typename T>
T add(T a, T b) {
return a + b;
}
// 使用
int sum = add(3, 5); // T 被推导为 int
double sum2 = add(3.14, 2.7); // T 被推导为 double
new / delete(现代 C++ 推荐智能指针)std::unique_ptr:独占所有权std::shared_ptr:共享所有权(引用计数)std::weak_ptr:弱引用,打破循环引用// 现代 C++ 内存管理
#include <memory>
std::unique_ptr<int> ptr = std::make_unique<int>(42);
// 无需手动 delete,自动释放
auto x = 10;、decltype(y)for (auto& item : vec) { ... }auto func = [](int x) { return x * 2; };std::move、右值引用 &&auto [name, age] = getPerson();template<Integral T>co_await、co_yield、co_returnimport 替代 #includeoperator<=>(太空飞船运算符)C++ 标准模板库(STL)是 C++ 最宝贵的财富:
vector、list、deque、map、unordered_map、set、queue、stacksort、find、accumulate、transform、reversebegin、end、advanceunique_ptr、shared_ptr、weak_ptrthread、mutex、condition_variable、future、async<filesystem>(C++17)<format>(C++20)<random><regex><chrono>C++ 编译为机器码直接运行,没有虚拟机开销。更重要的是,C++ 的高级特性(类、模板、Lambda)在编译时被展开/内联,运行时零开销。
C++ 支持面向过程、面向对象、泛型编程、函数式编程、元编程等范式,开发者可以根据问题选择最合适的表达方式。
C++ 保留了 C 语言的底层控制能力,可以操作内存地址、进行位运算、编写内联汇编,是系统级编程的首选。
C++ 可以在 Windows、Linux、macOS、Android、iOS、嵌入式系统等几乎所有平台上运行,是真正的"一次编写,到处编译"。
# 使用 GCC/Clang 编译 C++ 程序
g++ -std=c++20 -Wall -Wextra -Werror -O2 -o program main.cpp
# 关键选项:
# -std=c++20 : 指定 C++ 标准
# -Wall -Wextra : 开启警告
# -O2 / -O3 : 优化级别
# -g : 调试信息
# -fsanitize=address : 内存检查
new 了忘记 delete(使用智能指针解决)std::array / std::vector)int a; int b = a; 使用未初始化变量shared_ptr 互相引用导致内存泄漏(使用 weak_ptr)const 标注不修改的变量和函数nullptr 替代 NULL 或 0override 显式标注重写虚函数final 禁止继承或重写C++ 基础语法、数据类型、控制结构、函数、数组、指针基础
类与对象、继承、多态、构造函数/析构函数、运算符重载
智能指针、移动语义、Lambda、auto、模板、STL 容器与算法
模板元编程、并发编程(<thread>)、网络编程、大型项目开发
C++ 是系统编程领域的核武器。
它不像 Python 那样容易上手,也不像 JavaScript 那样有繁荣的 Web 生态。但 C++ 是游戏引擎、浏览器、数据库、操作系统等底层基础设施的构建语言。
学习 C++ 可能是一段漫长的旅程——从 C++98 到 C++20,语言本身在不断进化。但掌握 C++ 意味着你拥有了 驾驭计算机硬件的能力,这是其他高级语言无法给你的。
"C++ 让你在写代码的时候既能感受到 Python 的优雅,又能拥有 C 的性能。" 🔥
—— Bjarne Stroustrup(C++ 之父)