C++学习知识点汇总
下面整理一个比较系统的 C++学习知识点汇总,覆盖了基础到高级的内容,分类清晰,适合查阅或系统复习。
C++ 学习知识点总览
1. 基础语法
- 变量与基本数据类型(
int、float、char、bool) - 常量 (
const、constexpr) - 运算符(算术、逻辑、位运算、关系、赋值)
- 控制语句(
if、switch、for、while、do-while) - 函数定义与调用(值传递、引用传递、默认参数)
- 命名空间 (
namespace)
2. 面向对象编程(OOP)
- 类与对象
- 成员函数、成员变量
- 访问控制(
public、private、protected) - 构造函数、析构函数
- 拷贝构造、拷贝赋值、移动构造、移动赋值(Rule of 3/5/0)
- 继承与派生类(单继承、多继承)
- 虚函数、纯虚函数、抽象类
- 多态(运行时 vs 编译时)
- 运算符重载
- 友元函数与友元类 (
friend) - this 指针
3. C++11/14/17/20/23 新特性
auto类型推导decltypenullptrlambda表达式- 智能指针 (
std::shared_ptr,std::unique_ptr,std::weak_ptr) - 移动语义与右值引用 (
&&) - 完美转发 (
std::forward) - 可变参数模板 (
template<typename... Args>) - 初始化列表 (
std::initializer_list) enum class强类型枚举std::tuple,std::pair- 并发库 (
std::thread,std::mutex,std::async) constexpr、consteval、constinitconcepts、ranges- 协程(
co_await,co_yield,co_return)
4. 模板编程
- 函数模板
- 类模板
- 模板特化(全特化、偏特化)
- 变长模板(可变参数模板)
- SFINAE(Substitution Failure Is Not An Error)
- Concepts(C++20)
5. 标准模板库(STL)
- 容器
- 顺序容器:
vector,deque,list,array - 关联容器:
set,map,multiset,multimap - 无序容器:
unordered_set,unordered_map
- 顺序容器:
- 迭代器(普通迭代器、反向迭代器、常量迭代器)
- 算法(
sort,find,accumulate,transform等) - 函数对象 (
std::function,std::bind, Lambda) std::optional,std::variant,std::anystd::bitsetstd::filesystem
6. 内存管理
- new/delete, malloc/free
- 内存泄漏与智能指针
- 自定义内存池、Allocator
- 栈区、堆区、静态区、常量区
7. 进阶特性
- 类型萃取(
type_traits) - CRTP (Curiously Recurring Template Pattern)
- 元编程(模板元编程 TMP)
- 表达式模板(Expression Templates)
- 零成本抽象(Zero-overhead Abstraction)
- 编译器优化与内联 (
inline,constexpr) - ABI 和对象模型
- RTTI(Run-Time Type Information)与
dynamic_cast
8. 多线程与并发
std::threadstd::mutex、std::lock_guard、std::unique_lock- 条件变量 (
std::condition_variable) std::atomicstd::future与std::promise- 线程池(ThreadPool 自实现/第三方库)
9. 网络与系统编程
- Socket 编程(TCP/UDP)
- 异步 IO(
select、epoll、async/await) - 信号处理
- 跨平台编程(Boost.Asio、libuv)
10. 其他重要主题
- 日志系统(spdlog、glog)
- 配置管理(JSON, YAML, XML)
- 测试框架(GoogleTest)
- 序列化(protobuf、cap’n proto)
- 插件系统(dlopen/dlsym,或接口 + 工厂模式)
- CMake 项目管理
- 版本控制(Git)
附:常见学习路线推荐
| 阶段 | 内容 | 示例 |
|---|---|---|
| 入门 | 语法、OOP、函数、数组、指针 | LeetCode 简单题 |
| 提升 | 模板、STL、智能指针、异常处理 | 写小工具,比如简易服务器 |
| 高阶 | 并发编程、C++17、内存管理、设计模式 | 写中型项目,比如多人聊天室、SLAM 后端 |
| 专精 | 元编程、性能优化、操作系统接口 | 研究 Boost、深度理解编译器优化 |
