C++ 高级 API 设计与资源管理
1. 技术要求
在开始编写代码之前,需要准备以下工具:
- 支持 C++20 的编译器(推荐 GCC 11+)
- CMake 3.15+
源代码可在 此处 获取。
2. 设计优秀的 API
C++ 除了支持常见的面向对象 API 外,还有一些独特的技巧,下面将介绍其中几个重要的方面。
2.1 利用 RAII
RAII(Resource Acquisition Is Initialization)即资源获取即初始化,它更侧重于资源的释放而非获取。通过对比 C 和 C++ 的相似 API 可以更好地理解这一特性:
// C API
struct Resource;
Resource* acquireResource();
void releaseResource(Resource *resource);
// C++ API
using ResourceRaii = std::unique_ptr<Resource, decltype(&releaseResource)>;
ResourceRaii acquireResourceRaii();
C++ API 基于 C API,但并非总是如此。重要的是,在 C++ AP