首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递归静态成员函数与普通成员函数

递归静态成员函数与普通成员函数
EN

Stack Overflow用户
提问于 2014-05-03 00:37:22
回答 1查看 501关注 0票数 1

当函数声明为静态成员函数(而不是普通成员函数)时,递归函数会更快吗?例如,如下所示:

代码语言:javascript
运行
复制
class Tree {
  Node* p;
public:
  static int height(Node* n){
     .......
     int lh = height(n->left);
     int rh = height(n->right);
     ......
  }
};

可能的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-03 01:09:04

在技术上,这是真的(或者至少可能是真的*),因为每个非静态成员函数调用都包含一个不可见的this参数。例如,如果示例中的height函数是非静态的,那么它的有效签名将是int height(Tree* this, Node* n)。因此,如果您不需要this,您确实会浪费一些传递它的非零次数的循环。

然而,在实践中,这是非常不可能的(当然,取决于你到底在做什么)。因此,编写代码是最有意义的,只有在分析器显示(a)您有问题和(b)优化会产生影响时,才会担心进行微优化。

*我说可能是真的,因为我怀疑大多数编译器无论如何都会优化掉未使用的参数,但我不能百分之百地肯定这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23438912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档