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。它们应按目的和预期用途分组。
考虑到 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。它们应按目的和预期用途分组。