# CppLearning **Repository Path**: wangdong_cmcc/CppLearning ## Basic Information - **Project Name**: CppLearning - **Description**: 用7+1节实践课学习C++ - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-20 - **Last Updated**: 2026-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ======================================== C++ 学习笔记 ======================================== === 第1课:基础语法 === - 数据类型:int, double, char, string, bool - 条件判断:if / else if / else - 循环:for, while - 容器遍历:vector + 范围for - 多分支:switch === 第2课:函数与指针 === - 函数定义与重载 - 值传递(拷贝副本,不修改原值) - 引用传递(int& x,直接修改原值) - 指针传递(int* p,通过地址修改) - 引用/指针实现交换 - new/delete 动态内存管理 - nullptr 空指针安全检查 === 第3课:类与面向对象 === - 类:private/public、构造函数、初始化列表 - 默认构造函数 - const成员函数、getter/setter - 继承:public继承、protected成员 - 虚函数 + override(多态) - 虚析构函数(基类指针正确释放派生类) - 析构顺序:先派生类,后基类 === 第4课:模板与STL === - 函数模板:template - 类模板:Stack - 模板特化 - STL vector:sort排序、find查找、accumulate累加 - STL map:键值对、结构化绑定 - lambda表达式:[](int x){ },配合copy_if、for_each === 第5课:智能指针与现代C++ === - unique_ptr:独占所有权,make_unique,只能移动 - shared_ptr:共享所有权,引用计数 - weak_ptr:不增加计数,lock()、expired(),解决循环引用 - 移动语义:移动构造、移动赋值 - 右值引用(&&):绑定临时值 - auto 类型推导 - 结构化绑定:auto [key, value] = pair(C++17) - if初始化语句(C++17) === 第6课:异常处理与文件I/O === - try/catch/throw 异常机制 - 标准异常:invalid_argument、out_of_range - 自定义异常类(继承runtime_error) - 多重catch(从具体到通用) - ofstream:写文件,检查is_open() - ifstream:读文件,getline()逐行读取 - stringstream:字符串与数字互转 - filesystem(C++17):路径、存在判断、文件大小、目录遍历 - RAII:资源在作用域结束时自动释放 === 第7课:多线程与并发编程 === - thread:创建线程,传函数+参数,join()等待完成 - this_thread::get_id()获取线程ID,sleep_for()休眠 - mutex + lock_guard:RAII自动加锁解锁 - atomic:无锁线程安全计数器 - condition_variable:等待/通知(生产者-消费者模式) - unique_lock:灵活加锁,配合cv.wait() - async + future:异步并行计算,get()阻塞等待结果 - promise + future:线程间数据传递通道 - chrono:高精度计时、时间间隔计算