如何解决在 C++ 中返回函子的正确方法
考虑我们有一个 add
函数声明如下:
int add(const int a,const int b);
如果我们从 add
返回这个 foo
函数...
std::function<int(const int,const int)> foo()
{
return add;
}
std::function<int(const int,const int)> foo()
{
return &add;
}
以上哪一种是返回函数对象的正确方法,因为两者的工作方式完全相同?
解决方法
两个代码片段是相同的(就语言而言)。
std::function
可以从任何可调用对象(无论是 lambda、函数指针等)构造。在这两个示例中,您都使用函数指针构造 std::function
。
-
在第一个示例中,
add
表示函数的名称——它衰减为函数指针。 -
在第二个示例中,表达式
&add
显式获取函数的地址,生成函数指针。
没有“正确”的约定,因为每个约定都同样有效。代码库中最重要的是一致性和可读性;所以我会坚持现有代码库使用的任何做法,或者贵组织的编码约定中规定的任何做法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。