第一章:开天辟地——环境搭建与第一行代码
1.1 开发环境配置全景指南
Windows平台推荐方案:
# 安装Visual Studio 2025社区版(网页3)
winget install --id Microsoft.VisualStudio.2025.Community
:: 选择工作负载时勾选"C++桌面开发"
Linux/macOS开发环境:
# 安装GCC 13.2工具链(网页6)
sudo apt install build-essential gdb cmake
跨平台开发神器VSCode配置:
// .vscode/settings.json
{
"C_Cpp.default.compilerPath": "/usr/bin/g++",
"C_Cpp.intelliSenseEngine": "Tag Parser"
}
环境验证代码:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, C++25!" << endl;
// 验证C++23标准支持
auto print = [](auto&&... args) {
(cout << ... << args) << '\n';
};
print("折叠表达式", " 验证通过");
return 0;
}
第二章:筑基篇——语法核心十二重关
2.1 数据类型与运算符的暗礁规避
易错点示例:
short value = 32768; // 溢出陷阱[2](@ref)
int uninit; // 未初始化风险[2](@ref)
if (x = 5) {} // ==误写为=[2](@ref)
2.2 控制结构的精妙运用
循环优化技巧:
// 使用范围for遍历(网页9)
int arr[] = {2,4,6,8};
for(auto& num : arr) {
num *= 2; // 引用修改原数组
}
2.3 函数设计的艺术
参数传递三原则:
- 输入参数优先用
const&
- 输出参数使用指针
- 可选参数设置默认值
递归优化示例:
constexpr int factorial(int n) { // 编译期计算
return n <= 1 ? 1 : n * factorial(n-1);
}
第三章:面向对象圣殿
3.1 类设计的黄金法则
封装实践:
class BankAccount {
private:
double balance;
public:
explicit BankAccount(double init) : balance(init) {}
void deposit(double amount) noexcept {
balance += amount;
}
};
3.2 继承体系的构建
虚函数表原理:
class Shape {
public:
virtual double area() const = 0;
virtual ~Shape() = default;
};
第四章:内存管理生死簿
4.1 智能指针大全
// 现代内存管理(网页4)
auto ptr = make_unique<Widget>();
auto shared = make_shared<ConnectionPool>();
4.2 内存泄漏检测
Valgrind使用示例:
valgrind --leak-check=full ./your_program
第五章:STL与泛型编程
5.1 容器选用指南
容器类型 | 适用场景 | 时间复杂度 |
---|---|---|
vector | 随机访问 | O(1)访问 |
list | 频繁插入/删除 | O(1)插入 |
unordered_map | 快速查找 | O(1)平均 |
5.2 算法应用示例
// 使用视图(C++20特性)
auto even = views::filter([](int x){ return x%2==0; });
for (int x : vec | even) {
cout << x << " ";
}
第六章:并发编程新纪元
6.1 线程池实现
// C++20协程示例
task<> async_operation() {
co_await http_request();
co_return process_data();
}
第七章:实战项目工坊
7.1 游戏引擎模块开发
class GameObject {
Transform transform;
vector<Component*> components;
public:
template<typename T>
T* get_component() const {
for (auto comp : components) {
if (auto t = dynamic_cast<T*>(comp))
return t;
}
return nullptr;
}
};
第八章:调试与优化秘籍
8.1 GDB高级技巧
(gdb) watch *(int*)0x7fffffffe340 # 监控内存地址
(gdb) catch throw # 捕获异常