目录

1. 面向对象编程(OOP)

2. 智能指针(C++11)

3. STL进阶

4. C++11/14/17特性

5. 异常处理

6. 多线程编程(C++11)

7. 文件与流

8. 模板编程基础


中阶阶段的目标是掌握C++的高级特性和面向对象编程(OOP),能够编写复杂程序,理解内存管理和STL高级用法,为后端开发、游戏开发或系统编程打基础。

1. 面向对象编程(OOP)

  • 类与对象:

    • 类定义:class和struct(访问控制:public、private、protected)。

    • 成员函数与成员变量。

    • 重点:封装性,构造函数与析构函数。

  • 构造函数与析构函数:

    • 默认、带参、拷贝构造函数。

    • 析构函数:~ClassName()。

    • 重点:理解拷贝构造函数的深拷贝与浅拷贝。

  • 继承:

    • 基类与派生类:class Derived : public Base。

    • 访问控制与继承方式(public、protected、private)。

    • 重点:虚函数与多态(见下文)。

  • 多态:

    • 虚函数:virtual关键字。

    • 纯虚函数与抽象类:virtual void func() = 0;。

    • 重点:虚函数表(vtable),动态多态的性能开销。

  • 运算符重载:

    • 重载+、-、<<等运算符。

    • 重点:友元函数(friend)与运算符重载。

2. 智能指针(C++11)

  • 智能指针类型:

    • std::shared_ptr:共享所有权,引用计数。

    • std::unique_ptr:独占所有权,自动释放。

    • std::weak_ptr:解决shared_ptr循环引用问题。

    • 重点:智能指针与裸指针的区别,避免内存泄漏。

  • 使用场景:

    • 动态资源管理。

    • 重点:理解std::make_shared和std::make_unique的性能优势。

3. STL进阶

  • 容器:

    • 序列容器:std::list、std::deque。

    • 关联容器:std::map、std::set、std::unordered_map、std::unordered_set。

    • 重点:理解各容器的复杂度(如map的O(log n)查找)。

  • 迭代器:

    • 种类:输入、输出、前向、双向、随机访问迭代器。

    • 重点:迭代器失效问题(如vector插入导致失效)。

  • 算法:

    • 高级算法:std::transform、std::accumulate、std::for_each。

    • 重点:结合lambda表达式(C++11)使用STL算法。

  • 函数对象与绑定:

    • 函数对象:std::function(C++11)。

    • 绑定:std::bind。

    • 重点:函数对象在回调和事件处理中的应用。

4. C++11/14/17特性

  • C++11:

    • auto和decltype:类型推导。

    • Lambda表达式:[capture](params) { body };。

    • 范围for循环:for (auto& x : container)。

    • 右值引用与移动语义:std::move。

    • 重点:理解移动构造函数和移动赋值。

  • C++14:

    • 泛型lambda:auto lambda = [](auto x) { return x * 2; };。

    • 返回类型推导:auto func() { return 42; }。

    • 重点:简化模板编程。

  • C++17:

    • 结构化绑定:auto [a, b] = std::pair(1, "test");。

    • std::optional、std::variant、std::any。

    • 重点:掌握std::optional在错误处理中的应用。

5. 异常处理

  • 基本语法:

    • try、catch、throw。

    • 标准异常:std::exception。

    • 重点:异常安全性和异常传播。

  • 自定义异常:

    • 继承std::exception。

    • 重点:异常的性能开销,谨慎使用。

6. 多线程编程(C++11)

  • 线程管理:

    • std::thread:创建与管理线程。

    • 重点:线程同步问题(如数据竞争)。

  • 同步原语:

    • 互斥锁:std::mutex、std::lock_guard、std::unique_lock。

    • 条件变量:std::condition_variable。

    • 重点:避免死锁,使用RAII管理锁。

  • 异步编程:

    • std::async和std::future。

    • 重点:异步任务的返回值获取。

7. 文件与流

  • 文件操作:

    • 文件流:std::ifstream、std::ofstream(需包含<fstream>)。

    • 重点:文件读写与错误处理。

  • 字符串流:

    • std::stringstream(需包含<sstream>)。

    • 重点:字符串与数据类型的转换。

8. 模板编程基础

  • 函数模板:

    • 定义:template<typename T> T max(T a, T b);。

    • 重点:模板实例化与类型推导。

  • 类模板:

    • 定义:template<typename T> class MyClass { ... };。

    • 重点:模板与STL容器的结合。

  • 模板特化:

    • 全特化与偏特化。

    • 重点:特化特定类型的模板行为。

下面我推荐一个学习编程语法的网站,包含上述所有知识点的详细介绍:

C++ 基本语法 | 菜鸟教程 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐