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
类型推导decltype
nullptr
lambda
表达式- 智能指针 (
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
、constinit
concepts
、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::any
std::bitset
std::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::thread
std::mutex
、std::lock_guard
、std::unique_lock
- 条件变量 (
std::condition_variable
) std::atomic
std::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、深度理解编译器优化 |