陈硕在《C++工程实践经验谈》在二进制兼容性和避免使用虚函数作为库的接口两节中说到COM使用虚函数暴露接口的做法破坏了动态链接库的二进制兼容性 。
1. 为什么需要动态链接库
假设我们开发了一个图形库
我们要将我们的库发布出去无非有以下几种方式:
1) 源码:这种方式最直接,但是有两个比较明显的缺点:暴露了实现、对库的任何修改都需要用户重新编译。
2) 静态库:静态库不会暴露实现,但是同样需要重新编译
3) 动态链接库:
2. 解决二进制兼容性
ceshi
3. COM中的做法
4. 总结
番外篇(为什么我们需要接口继承)
白盒继承
黑盒继承