> 技术文档 > C++核心技术:从基础到进阶

C++核心技术:从基础到进阶


第一部分:C++基础核心

1.1 基础语法与控制结构

1.变量与类型

  • 基本类型(intfloatbool等)与类型转换(显式static_cast vs 隐式转换)
  • 复合类型:数组、结构体、枚举(enum class强类型枚举)

2.控制流

  • if-elseswitch-case(注意fall-through问题)
  • 循环:forwhiledo-while与范围for(C++11)

 1.2 函数指针

  • 函数基础
  1. 参数传递(值传递、引用传递&、指针传递*
  2. 返回值与return语句
  • 指针与引用
    • 指针算术、nullptr(C++11替代NULL
    • 引用本质(别名机制)、右值引用基础(&&初步)

1.3 面向对象编程(OOP)​

  • 类与对象
    • 成员变量与方法、访问控制(public/private/protected
    • 构造函数、析构函数与拷贝控制(拷贝构造、拷贝赋值)
  • 多态与继承
    • 虚函数与动态绑定(virtual关键字)
    • 继承体系中的构造/析构顺序

第二部分:现代C++核心特性(C++11/14/17)​

2.1 类型推导与自动资源管理

  • ​**autodecltype**​
    • auto的类型推导规则(忽略顶层const、引用折叠规则)
    • decltype(auto)(C++14)保留完整类型信息
  • 智能指针
    • std::unique_ptr(独占所有权)、std::shared_ptr(引用计数)
    • 循环引用问题与std::weak_ptr解决方案

2.2 移动语义与右值引用

  • 移动构造与移动赋值
    • 资源所有权转移的实现原理(指针交换+源对象置空)
    • std::move的本质(类型转换,非移动操作本身)
  • 完美转发
    • std::forward与引用折叠规则(T& &&折叠为T&

2.3 Lambda表达式与函数式编程

  • Lambda语法
    • [capture] (params) -> return_type { body }的捕获列表(值捕获[=]、引用捕获[&]
    • 泛型Lambda(C++14的auto参数)
  • ​**std::function与可调用对象**​
    • 函数指针、函数对象(仿函数)、Lambda的统一封装

第三部分:内存模型与底层控制

3.1 对象生命周期与内存布局

  • 构造/析构顺序
    • 全局对象、局部静态对象、线程局部存储(TLS)的初始化时机
    • 继承体系中的构造/析构顺序(基类→派生类)
  • 内存对齐
    • alignas指定对齐值、alignof查询对齐要求
    • 结构体填充(Padding)与内存优化

3.2 自定义内存管理

  • ​**重载new/delete**​
    • 全局重载与类特定重载的区别
    • 内存池实现原理(固定块分配器示例)
  • ​ placement new
    • 在已分配内存上构造对象(new (ptr) Type

第四部分:并发与并行编程基础

4.1 线程与同步原语

  • ​**std::thread基础**​
    • 线程创建、join()detach()
    • 线程局部存储(thread_local关键字)
  • 互斥锁与条件变量
    • std::mutexstd::lock_guard(RAII锁管理)
    • std::condition_variable(生产者-消费者模型示例)

4.2 原子操作

  • ​**std::atomic基础**​
    • 原子类型(atomicatomic_flag
    • load()store()exchange()等操作

第五部分:性能优化基础

5.1 编译期优化

  • ​**constexpr函数**​
    • 在编译期计算常量表达式(C++11到C++20的演进)
  • 内联与编译器优化
    • inline关键字的作用与编译器行为
    • 常见优化技术(循环展开、函数内联)

5.2 缓存友好设计

  • 数据局部性原则
    • 时间局部性与空间局部性
    • 结构体成员排列顺序优化(高频访问字段靠前)

第六部分:进阶主题(后续可扩展)​

​**6.1 模板元编程与concepts**​

  • ​**SFINAE与std::enable_if**​
    • 编译期类型筛选技术
  • ​**C++20 concepts**​
    • 约束模板参数的直观语法

6.2 协程与异步编程

  • 协程基础概念
    • co_awaitco_yieldco_return的语义
    • Promise类型与协程状态机

6.3 现代C++工具链

  • 模块化编程(C++20)​
    • 替代头文件的模块接口(moduleimport
  • 静态分析工具
    • Clang-Tidy、Cppcheck的典型用法