C++ 库 API 设计问题

标签 c++ api shared-libraries static-libraries

我正在创建一个供第三方使用的 C++ 库。虽然我熟悉创建 C 库,但对创建 C++ 库的经验却很少。我担心的是,我需要考虑 C++ 库 API 带来的其他问题。如:

  1. 跨 API 的异常处理。
  2. 类成员对库创建的对象的用户访问权限
  3. 用户销毁库创建的对象,反之亦然。
  4. 谁知道还有什么……

除了我必须考虑的 C 库之外,我还必须考虑什么?

最好的问候

最佳答案

C++ 是一种比 C 更复杂的语言,因此您需要注意的问题更多。总是存在语言中立的问题,例如如何设计良好的公共(public)/私有(private)分离、文档、版本控制、保持向后兼容性等。但也存在各种特定于 C++ 的问题,例如 const 正确性、模板的使用、异常与返回码,不公开数据成员,继承的使用,考虑复制构造函数和赋值运算符,指针或引用的使用,默认参数, friend ,内联的使用等。

坦白说,我是《C++ 的 API 设计》一书的作者。不想听起来像我在推这本书,它确实涵盖了您要问的主题:如何为 C++ 设计良好的 API。您可以查看本书的目录,以全面了解您应该考虑的问题。此外,示例章节还包括对 pimpl 习惯用法的讨论,我个人喜欢将其作为在 C++ 中提供更好封装的一种方式。

http://www.apibook.com/blog/contents

关于C++ 库 API 设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15634768/

相关文章:

c++ - 嵌入式 Python : Getting func obj from imported module

c++ - sizeof 是做什么的?

java - 谷歌地图 android api v2 应用程序崩溃

javascript - Facebook API 站点 URL

javascript - 随机图像生成器项目(Javascript)

C++ 声明一个带有大小函数的二维数组

c++ - std::string 应该由函数的值返回还是由 "std::string &s"作为参数返回?

跨不同编译器的 C++ 库

linux - 将 Qt 从 Linux 集成/移植到嵌入式 Linux

c - dlmopen() 无法解析创建的命名空间中定义的函数符号