【发布时间】:2015-12-21 09:31:33
【问题描述】:
假设我的类有一个方法,它必须从它内部调用一些其他递归方法。
我的 .h 文件如下所示:
class MyClass()
{
public:
void foo();
};
我的问题是,这些实现中哪个更好(忽略无限循环):
namespace
{
void myRecursiveFunction()
{
myRecursiveFunction();
}
}
void MyClass::foo()
{
myRecursiveFunction();
}
或
void MyClass::foo()
{
std::function<void()> myRecursiveFunction =
[&] ()
{
myRecursiveFunction();
};
myRecursiveFunction();
}
,假设 myRecursiveFunction() 只会被 foo() 调用?
当然,在现实世界中myRecursiveFunction() 做了 一些事情。我只是不想用不需要的信息填充代码。
如果我只在一种方法中使用myRecursiveFunction,我的所有班级都可以访问它吗?
【问题讨论】:
-
第二个例子还能编译吗?为什么要创建一个额外的推理层?我不明白你问题的point。
-
@YSC 大概这不是什么都没有:有一个从所说的东西调用的私有到某物的函数。
-
@YSC 不管怎样,写递归 lambda:stackoverflow.com/questions/2067988/…,stackoverflow.com/questions/14531993/…
-
@YSC 我修复了编译问题。我想知道我的所有班级都可以访问
myRecursiveFunction是否可以,因为它只用于一种方法。 -
在第二种情况下通过引用捕获,这两个函数不是严格等价的,所以你的问题是有偏见的。
标签: c++ recursion std-function