接口实现惯用语

Interface implementation idioms

我正在尝试编写将在嵌入系统上使用的跨平台库(性能非常重要)
我曾经检查过 PIMPL idiom,它看起来不错,但我有点害怕动态对象分配,这是一种繁重的操作(我将分配很多 classes).
我还尝试根据目标系统在 IDE 中附加实现文件。
通过这个技巧,我认为我获得了很好的性能但降低了代码清晰度,并且不得不使用预处理器在 class 系统因变量中定义。
谁能告诉我以上哪种成语最适合我的情况,或者如果有更好的,请说出它的名字。
谢谢。

PIMPL 成语主要用于编译防火墙.

如果 class A 是使用 pimpl idiom 实现的(因此有例如 AA_impl),那么 A 的客户做不需要查看 A_impl 的定义或包含任何私有变量的头文件或它的其他实现细节。

如果您实际上并不关心这个编译防火墙,而更关心动态分配,那么您可以使用的 'faster' 习惯用法是 静态多态性 ,基于在 CRTP 上。

当您使用 CRTP 时,您可以让相同的方法出现在各种不同的子classes 中,而不会产生虚拟调度的成本。但缺点是,大多数使用 subclasses 的函数都需要是模板函数,因此会导致大量额外的代码生成。这是静态多态性和动态多态性(通过例如虚拟分派)之间的基本权衡。

我不完全确定在嵌入式系统中为此使用 CRTP 有多常见——由于代码生成问题,使用 pimpl 或虚拟分派可能仍然更常见。 YMMV.