跳到正文
XiaoGao 的个人博客

NO.02 · 编程语言

C++ 学习笔记:类与对象、模板与 STL 的完整路线

按课程顺序整理的 C++ 学习笔记,覆盖入门基础、类和对象、内存管理、模板、STL 容器与模板进阶。

发布 DATE
字数 WORDS
955
阅读 READ
3 分钟

C++ 在 C 的基础上引入了面向对象、泛型编程和强大的标准库。这套笔记按课程顺序整理,内容覆盖 C++ 入门、面向对象、内存管理、模板和 STL 容器,目标是建立可持续扩展的 C++ 知识结构。

学习路线

1
2
3
4
5
6
7
8
9
10
11
12
13
C++ 基础
↓
类和对象
↓
内存管理
↓
模板
↓
STL 简介
↓
string / vector / list / stack / queue
↓
模板进阶

建议先掌握语言基础和类的基本使用,再学习对象生命周期、资源管理和模板。完成 STL 容器部分后,应重点练习”能用、明理、能扩展”三个层次:先会使用接口,再理解底层结构,最后尝试实现或扩展组件。

课程目录

编号 课件 核心内容
001 C++ 入门基础 C++ 发展历史、标准版本、课程结构和参考资料
002 类和对象(上) 类的定义、成员函数、访问限定符、封装和对象基础
003 类和对象(中) 默认成员函数、构造函数、析构函数、拷贝构造和赋值
004 类和对象(下) 初始化列表、隐式类型转换、static 成员、友元和内部类
005 内存管理 C/C++ 内存分布、动态内存、malloc/free 与 new/delete
006 模板初阶 泛型编程、函数模板、类模板和模板参数
007 STL 简介 STL 组成、六大组件、学习方法和实际价值
008 string std::string、常用接口、迭代器、范围 for 和 auto
009 vector 构造、迭代器、容量、空间管理、增删改查和常见接口
010 list 双向链表容器、迭代器、容量、元素访问和插入删除
011 stack 和 queue 栈、队列、适配器、最小栈、表达式求值和序列问题
012 模板进阶 非类型模板参数、模板特化、偏特化和参数匹配

知识重点

类和对象

  • 使用 class 定义数据和行为,理解封装、访问控制和成员函数;
  • 掌握构造函数、析构函数、拷贝构造和赋值运算符;
  • 理解编译器生成的默认成员函数,以及何时需要手动实现;
  • 使用初始化列表正确初始化引用、const 成员和没有默认构造函数的成员对象。

内存管理

  • 区分栈、堆、静态区、常量区和代码区;
  • 理解动态内存分配、释放和扩容;
  • 区分 C 风格的 malloc/free 与 C++ 风格的 new/delete;
  • 关注内存泄漏、悬空指针、重复释放和越界访问等问题。

模板与泛型编程

  • 使用函数模板和类模板编写类型无关的代码;
  • 理解模板实例化和参数推导,学习非类型模板参数、模板特化和偏特化;
  • 在复用性、可读性和编译复杂度之间进行权衡。

STL 与容器

  • 理解容器、迭代器、算法和函数对象等 STL 组件之间的关系;
  • 掌握 string 的字符串管理,理解 vector 的连续存储、size、capacity、resize 和 reserve;
  • 理解 list 的节点结构、迭代器和插入删除特点;
  • 使用 stack 和 queue 解决后进先出、先进先出等问题。

通用编译方式

仓库当前以课件资料为主。如果添加 .cpp 示例,可以使用支持 C++11 或更高标准的编译器:

1
g++ -std=c++11 -Wall -Wextra -Wpedantic example.cpp -o example

对于使用较新语言特性的代码,可以将标准切换为 -std=c++17。

后续扩展方向

  • 为每个章节增加独立的 .cpp 示例与 CMake 构建配置;
  • 增加单元测试和容器操作实验;
  • 增加复杂度、迭代器失效和异常安全笔记;
  • 补充现代 C++ 内容:智能指针、移动语义、lambda、并发和 ranges。

仓库

    ↑↓ 选择↵ 打开>theme · >random · >top · >archive