5

我用下面两个函数来测试MSVC08下的Tail递归优化

int TailRecursively1(int i)
{
  return TailRecursively1(i);
}

int TailRecursively2(std::string str)
{
  return TailRecursively2(str);
}

为什么 TailRecursively1 优化了,TailRecursively2 却导致栈溢出?

4

1 回答 1

5

因为在将str参数按值发送到TailReucrsively2时,会调用std::string复制构造函数和析构函数?

(我对此不是 100% 确定)

于 2013-01-12T16:20:42.740 回答