C++ 将代码转移到子函数
我在一个函数中有一些代码,我想将它们分离成它自己的函数。我希望在尽可能少地修改原始代码的情况下完成此操作。下面我编写了一个noddy示例,其中代码段只是“x+=y”。我想把代码取出,放到它自己的函数中。对于C,我必须通过将y改为指针,然后使用它来实现这一点。但我记得在某个地方(现在已经忘记了),C++中有一些技巧,我可以把变量传递给代码“x+y”。 仅供参考:我想在进行调用图分析时执行此过程(稍后可能会反转)C++ 将代码转移到子函数,c++,C++,我在一个函数中有一些代码,我想将它们分离成它自己的函数。我希望在尽可能少地修改原始代码的情况下完成此操作。下面我编写了一个noddy示例,其中代码段只是“x+=y”。我想把代码取出,放到它自己的函数中。对于C,我必须通过将y改为指针,然后使用它来实现这一点。但我记得在某个地方(现在已经忘记了),C++中有一些技巧,我可以把变量传递给代码“x+y”。 仅供参考:我想在进行调用图分析时执行此过程(稍后可能会反转) void main() { int x = 2; int y = 5;
void main()
{
int x = 2;
int y = 5;
#if KEEP_IN_BIG_FUNC
x += y;
#else // put in sub function
sub_function(y,&x);
#endif
printf("x = %d\n",x); // hopefully will print "7"
}
void sub_function(int y,int *x)
{
*x += y;
}
这种技巧称为通过引用传递。C++常见问题在这里有很好的参考文献部分:
您可以通过引用传递变量:
void sub_function(int y, int& x)
{
x+=y
}
void sub_function(int y, int &x) {
x += y;
}
我相信你要找的是推荐人。在您的示例中,函数
sub_函数
将如下所示:
void sub_function(int y, int& x)
{
x += y;
}
你可以这样称呼它:
sub_function(y, x);
这叫做传递引用:
void sub_function(int y, int& x)
{
x+=y
}
void sub_function(int y, int &x) {
x += y;
}
被称为:
sub_function(y,x);
顺便说一句,与将KEEP_IN_BIG_FUNC设置为1的main函数相比,将sub_函数内联对性能没有影响。实际上为了可读性,最好将结果作为真函数返回:int sub_函数(int y,int x){return(x+=y);}对于整数,当然。但是对于大型或用户定义的类型,通过引用传递的效率将超过可读性。请不要在没有对答案做一点工作的情况下发布链接。为什么不呢?该链接清楚地、全面地解释了C++中引用的工作方式。如果OP阅读了它,他将学到他需要知道的东西,至少就像我在这里输入答案一样。