小编ein*_*ort的帖子

为什么要创建一个具有一个operator()的单个成员的类?

我试图在那里找出 - 一个很好的技术原因来定义一个只包含一个成员的类,这个成员碰巧是一个operator().

我偶然发现了一个人 - 无论出于什么原因 - 创建了一个包含几个类的命名空间,但每个类只包含一个operator()作为成员.

我很清楚,这些类可能会被用作方法(很可能),但为什么这是一个很好的技术方法(我假设有一个很好的方法),而不是简单地定义一组不同的方法单例类,在这种特殊情况下属于上面提到的命名空间.

命名空间看起来像:

namespace myNamespace {
   class ClassA {
   public:
      void operator()();
   };

   class ClassB {
   public:
      int operator()(arg1, arg2);
   };

   ...
}
Run Code Online (Sandbox Code Playgroud)

这仅仅是个人品味/风格的问题还是这是先进/精致设计的表现?我认为这个设计包含了我尚未收集的一些明智的知识,但另一方面,我没有找到一篇文章或问题来讨论这一点 - 这让我怀疑设计中的这种"明智的知识".

这里的专家有什么要说的?

提前致谢!

编辑

再次问好!我接受这个问题是一个重复的问题,其答案可以在这里找到.

"Functor"一词对我来说是未知的,在试图找到我怀疑的答案时(在提出这个问题之前),我没有看到任何对这个术语的引用.

我仍然接受谢尔盖的答案,因为他的答案向我介绍了这个词,他的解释是回答我的问题.他的回答 - 从我的观点来看 - 通过我在上面所说的链接中找到的答案得到了扩展.

谢谢!

c++ oop operator-overloading operator-keyword

6
推荐指数
1
解决办法
347
查看次数

标签 统计

c++ ×1

oop ×1

operator-keyword ×1

operator-overloading ×1