我试图在那里找出 - 一个很好的技术原因来定义一个只包含一个成员的类,这个成员碰巧是一个operator()
.
我偶然发现了一个人 - 无论出于什么原因 - 创建了一个包含几个类的命名空间,但每个类只包含一个operator()
作为成员.
我很清楚,这些类可能会被用作方法(很可能),但为什么这是一个很好的技术方法(我假设有一个很好的方法),而不是简单地定义一组不同的方法单例类,在这种特殊情况下属于上面提到的命名空间.
命名空间看起来像:
namespace myNamespace {
class ClassA {
public:
void operator()();
};
class ClassB {
public:
int operator()(arg1, arg2);
};
...
}
Run Code Online (Sandbox Code Playgroud)
这仅仅是个人品味/风格的问题还是这是先进/精致设计的表现?我认为这个设计包含了我尚未收集的一些明智的知识,但另一方面,我没有找到一篇文章或问题来讨论这一点 - 这让我怀疑设计中的这种"明智的知识".
这里的专家有什么要说的?
提前致谢!
编辑
再次问好!我接受这个问题是一个重复的问题,其答案可以在这里找到.
"Functor"一词对我来说是未知的,在试图找到我怀疑的答案时(在提出这个问题之前),我没有看到任何对这个术语的引用.
我仍然接受谢尔盖的答案,因为他的答案向我介绍了这个词,他的解释是回答我的问题.他的回答 - 从我的观点来看 - 通过我在上面所说的链接中找到的答案得到了扩展.
谢谢!