c++ 中的辅助函数和抽象

Helper function and abstraction in c++

考虑到 Bjarne Stroustrup 的 c++ 编程语言的 16.3.2 Helper Functions 假设我们有一个接口

namespace IO
{
   class IImge
   {
   public:
       virtual double getThreshold() = 0;
       ...
   }
}

我们有具体的class

namespace IO
{
    class Image :public IImge
    {
    public:
        double getThreshold() override {return 20.0}
    }
}

并假设我们要添加这样的辅助函数

double getNormalizedThreshold(IImage* image) {return image->getThreshold() / 100;}

在哪里放置函数声明?在 IImage 或图像中?

由于您的辅助函数不需要知道 Image,因此合乎逻辑的放置位置是 IImage.

我认为这个问题有点基于意见。我个人对此的感觉是辅助函数应该在命名空间中声明,而不是在任何 类 中,并且应该只使用此类 类 的 public API。它们应按目的和预期用途分组。