C++ 仿函数是一个支持重载 () 运算符的类。这是范畴论意义上的仿函数吗?什么是对象和态射?
最佳答案
不,正如 Hurkyl 所说,尽管在面向对象编程中由“对象”推断出名称冲突,但 OOP 仿函数与范畴论仿函数无关。与 OOP 的更好匹配是重命名 OOP class
如 category
, 以及类型之间的转换作为仿函数。像这样的东西:
category Shape;
category Rectangle : forgetful functor Shape;
category Polygon : forgetful functor Shape
{
functor Polygon( Rectangle & );
};
代替
class Shape;
class Rectangle : public Shape;
class Polygon : public Shape
{
implicit Polygon( Rectangle & );
};
唉,开发OOP的人和开发范畴论的人不一样,因此术语不同。
关于c++11 - C++ 仿函数是范畴论意义上的仿函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38358988/