gpt4 book ai didi

从导出到 DLL 的类继承时的 C++ 缺点?

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:57 26 4
gpt4 key购买 nike

我有几个库,每个库都被编译为 DLL,并且它们被一些应用程序使用。我刚刚在其中一个库 (LIB_1) 中开发了一个类 (CLASS_A),它继承自另一个库 (LIB_2) 中存在的类 (CLASS_B),因此,它被编译为另一个 DLL。

到目前为止,我看不出这个解决方案有任何明显的缺点。另一种方法是制作 CLASS_A 的拷贝并将其放入 LIB2,因此 CLASS_B 可以从它继承,但我想避免使用该解决方案,因为我想避免拥有“相同”基类的两个不同版本。

从 DLL 中的类继承有什么重要的缺点吗?

非常感谢!

最佳答案

在设计说明上,没有真正的问题。依赖树只是稍微复杂一点,例如如果主程序直接同时使用 A 类和 B 类:

EXE
+--------+
v v
LIB_1 LIB_2
|
v
LIB_2

主要问题是二进制兼容性。除非您使用纯虚拟接口(interface),否则您的库将是可继承的,并且只能用于使用相同版本的相同编译器生成的可执行文件或 dll,并具有兼容的设置(即,兼容的编译器选项)。

除了二进制兼容性,dll 通常可以有自己的堆空间。即使使用纯虚拟接口(interface),您也需要注意在 dll 中使用了哪个 CRT(如果一个 dll 分配内存,这个并且只有这个 dll 应该释放它,因此相同的 CRT 用于 malloc/free)。

您可以阅读 this SO questionthis article了解更多信息。 This other article在处理如何在 dll 中导出类时,这也是一本非常有趣的读物。

关于从导出到 DLL 的类继承时的 C++ 缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18644271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com