gpt4 book ai didi

c++ - 您使用什么模式来分离 C++ 中的接口(interface)和实现?

转载 作者:可可西里 更新时间:2023-11-01 17:20:35 27 4
gpt4 key购买 nike

大型 C++ 项目中的一个问题可能是构建时间。在你的依赖树中有一些你需要处理的类,但通常你会避免这样做,因为每次构建都需要很长时间。你不一定想改变它的公共(public)接口(interface),但也许你想改变它的私有(private)成员(添加一个缓存变量,提取一个私有(private)方法,......)。您面临的问题是,在 C++ 中,即使是私有(private)成员也是在公共(public)头文件中声明的,因此您的构建系统需要重新编译所有内容。

遇到这种情况你会怎么做?

我列出了两个我知道的解决方案,但它们都有缺点,也许还有一个我还没有想到的更好的解决方案。

最佳答案

疙瘩图案:

在您的头文件中,仅声明公共(public)方法和私有(private)指针(pimpl 指针或委托(delegate))到前向声明的实现类。

在您的源代码中,声明实现类,将公共(public)类的每个公共(public)方法转发给委托(delegate),并在公共(public)类的每个构造函数中构造一个 pimpl 类的实例。

加上:

  • 允许您更改类的实现而无需重新编译所有内容。
  • 继承效果很好,只是语法有点不同。

减去:

  • 要编写大量愚蠢的方法体来进行委托(delegate)。
  • 调试起来有点尴尬,因为您有大量委托(delegate)要逐步完成。
  • 基类中的额外指针,如果您有很多小对象,这可能是个问题。

关于c++ - 您使用什么模式来分离 C++ 中的接口(interface)和实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/973000/

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