我正在创建一个供第三方使用的 C++ 库。虽然我熟悉创建 C 库,但对创建 C++ 库的经验却很少。我担心的是,我需要考虑 C++ 库 API 带来的其他问题。如:
- 跨 API 的异常处理。
- 类成员对库创建的对象的用户访问权限
- 用户销毁库创建的对象,反之亦然。
- 谁知道还有什么……
除了我必须考虑的 C 库之外,我还必须考虑什么?
最好的问候
最佳答案
C++ 是一种比 C 更复杂的语言,因此您需要注意的问题更多。总是存在语言中立的问题,例如如何设计良好的公共(public)/私有(private)分离、文档、版本控制、保持向后兼容性等。但也存在各种特定于 C++ 的问题,例如 const 正确性、模板的使用、异常与返回码,不公开数据成员,继承的使用,考虑复制构造函数和赋值运算符,指针或引用的使用,默认参数, friend ,内联的使用等。
坦白说,我是《C++ 的 API 设计》一书的作者。不想听起来像我在推这本书,它确实涵盖了您要问的主题:如何为 C++ 设计良好的 API。您可以查看本书的目录,以全面了解您应该考虑的问题。此外,示例章节还包括对 pimpl 习惯用法的讨论,我个人喜欢将其作为在 C++ 中提供更好封装的一种方式。
关于C++ 库 API 设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15634768/