C++ 基础知识完整详解(2026 最新版) 🚀
C++ 是高效、灵活、接近硬件的编程语言,被广泛用于游戏开发(Unreal Engine)、系统软件、嵌入式、高性能后端等领域。现代 C++(C++11 及以后)强调安全性、简洁性和性能,强烈推荐直接学习 Modern C++,避免老式 C 风格代码。
下面我为你整理一套 系统、清晰、由浅入深的 C++ 基础知识框架,适合零基础或有其他语言基础的同学。每个模块都包含核心概念 + 示例 + 注意事项 + 最佳实践。
第 1 章:C++ 入门准备与第一个程序
- 开发环境(2026 推荐):
- 编译器:GCC/Clang(Linux/Mac)、MSVC(Windows)
- IDE:Visual Studio(Windows 首选)、CLion、VS Code + CMake
- 在线练习:Compiler Explorer (godbolt.org)、LeetCode、CppReference
Hello World(现代写法):
#include <iostream>
int main() {
std::cout << "Hello, C++2026!" << std::endl;
return 0;
}
#include <iostream>:引入输入输出库std::cout:标准输出(推荐一直写std::前缀)std::endl:换行并刷新缓冲区
编译运行:g++ main.cpp -o hello && ./hello
第 2 章:基本语法与数据类型
2.1 变量、常量与标识符
- 基本数据类型:
- 整数:
int、long、long long(推荐std::int64_t等) - 浮点:
float、double - 字符:
char、wchar_t、char8_t/char16_t/char32_t(C++20) - 布尔:
bool - 无类型:
void - 类型修饰符:
signed、unsigned、short、long - 常量:
const(编译期)、constexpr(C++11,强常量表达式)
const int MAX = 100;
constexpr int square(int x) { return x * x; } // C++11
2.2 输入输出
#include <iostream>
int main() {
int a;
std::cin >> a;
std::cout << "你输入了:" << a << std::endl;
}
第 3 章:运算符与控制结构
- 运算符:算术(
+ - * / %)、关系(== != > <)、逻辑(&& || !)、位运算、赋值、自增自减、三目运算符?: - 控制语句:
if-else、switch-casefor、while、do-whilerange-based for(C++11 现代写法):cpp for (int x : {1,2,3,4}) { std::cout << x << ' '; }
注意:避免在循环中使用 using namespace std;(容易造成命名冲突)。
第 4 章:函数
- 函数定义与声明(分离头文件与源文件)
- 函数重载(Overloading):同名函数不同参数列表
- 默认参数:只能从右到左设置
- 内联函数
inline(减少函数调用开销) - 引用参数(后面详解)
int add(int a, int b = 0); // 声明
int add(int a, int b) {
return a + b;
}
第 5 章:命名空间(namespace)
(你之前专门问过,我这里简要回顾 + 补充)
namespace MyProject {
namespace Utils {
void log(const std::string& msg);
}
}
using MyProject::Utils::log; // 推荐单个引入
// using namespace std; // 慎用,尤其在头文件中
最佳实践:自己的代码全部放入自定义 namespace,头文件不要写 using namespace。
第 6 章:引用(Reference)与指针(Pointer) —— 非常重要!
- 引用:变量的别名,必须初始化,不能为空,不能重新绑定。
int a = 10;
int& ref = a; // 引用
ref = 20; // a 也变成 20
- 指针:存储地址,可以为空,可以重新指向。
int* p = nullptr; // 空指针(现代推荐)
int* p2 = &a;
现代 C++ 推荐:能用引用就不用指针,能用 std::unique_ptr 就不用裸指针。
const 位置:
const int* p:指向常量(不能通过 p 修改值)int* const p:常量指针(p 本身不能指向其他地址)
第 7 章:数组、字符串与结构体
- 数组:
int arr[10];(固定大小,推荐std::array) - C 风格字符串 vs
std::string(强烈推荐后者)
#include <string>
std::string s = "Hello";
s += " C++";
- 结构体(struct)和 类(class)初步:struct 默认 public,class 默认 private。
第 8 章:内存管理初步
- 栈 vs 堆(new/delete)
- 现代替代:
std::unique_ptr、std::shared_ptr(智能指针,后续会详细讲) - 避免内存泄漏:RAII(Resource Acquisition Is Initialization)思想
第 9 章:面向对象编程(OOP)基础
- 类与对象
- 封装(private/protected/public)
- 构造函数(默认、拷贝、有参)、析构函数
- this 指针
- 成员函数 const(const 对象只能调用 const 成员函数)
class Student {
public:
Student(const std::string& name) : name_(name) {} // 初始化列表
void show() const { std::cout << name_ << std::endl; }
private:
std::string name_;
};
第 10 章:C++ 标准库(STL)入门
- 容器:
std::vector(动态数组)、std::list、std::map、std::unordered_map - 算法:
std::sort、std::find等(<algorithm>) - 迭代器:容器与算法之间的桥梁
现代写法示例:
#include <vector>
#include <algorithm>
std::vector<int> v = {3, 1, 4, 1, 5};
std::sort(v.begin(), v.end());
学习路线建议(2026 版)
- 首推书籍:
- 《C++ Primer》(第 5 版或更新版)—— 基础最全面
- 《Effective Modern C++》(Scott Meyers)—— 现代特性
- C++ Core Guidelines(官网免费,必看最佳实践)
- 在线资源:
- cppreference.com(查手册神器)
- learncpp.com(免费教程)
- The Cherno / freeCodeCamp YouTube 视频课程
- 《现代 C++ 编程实战》视频系列
- 练习项目(边学边做):
- 计算器
- 学生管理系统(用 vector + struct/class)
- 井字棋 / 猜数字游戏
- 文件读写小工具
- 编译选项:至少用
-std=c++20或-std=c++17,开启警告-Wall -Wextra
下一阶段预告(现代 C++ 重点):
- auto、range-based for、lambda 表达式
- 智能指针与移动语义(move)
- 模板与泛型编程
- 异常处理
- 多线程基础(
std::thread)
你现在想怎么继续?
回复以下任意内容,我立刻给你详细展开:
- “从第X章开始详细讲 + 代码练习”
- “给我 20 道 C++ 基础练习题(带答案)”
- “现代 C++ 特性速成(C++11~C++23)”
- “指针与引用完全对比 + 智能指针”
- “OOP(类与对象)详解 + 示例项目”
- “推荐一个完整的入门小项目,手把手带做”
- “C++ Core Guidelines 核心条款解读”
或者直接说:“我要系统学习完整路线,每章后出练习题”。
记住:C++ 学习曲线有点陡,但坚持下来后,你会发现它的强大和优雅。动手写代码是最快的进步方式!
随时问我,我们一步步把 C++ 基础打得扎实无比!💪
你现在最想先深入哪一部分?