【发布时间】:2015-06-25 12:53:09
【问题描述】:
大家下午好。
我有一个关于 C++ 中的函数重载的问题。
类中有一个非常大的函数,我的任务是使其更易于阅读并降低其复杂性。
在该函数中,几乎存在两个相似的代码块。唯一的区别在于一些参数和一些额外的行。
我想从这些块中创建一个函数以避免重复,但是怎么做更好呢?我应该重载那个新函数还是在函数内添加一个 if 语句,以便如果一个参数具有这个或那个值,那么这几行额外的行也应该执行?
最好的方法是什么?
函数长这样
void f1(){
//some code
{
//some code block
//some other line that belongs to this block
//the code block continues
}
{
//the same kind of code block
//this line is completely different
//the code block continues
}
//some code
}
所以,我想用代码块制作一个函数,但它们并不完全相同,需要在中间执行一些不同的操作。 示例:
void boo(){
//code block
//if(blah) execute this additional line
//else this line
//code block
}
或重载
void boo(param1, param2){
//code block
//unique line
//code block
}
void boo(param1, param2, param3){
//code block
//unique line
//code block
}
【问题讨论】:
-
功能是否短到可以发帖?如果没有,你能写一个表达相同想法的示例函数吗?
-
好吧,它很长,我不能在这里发布这段代码。
-
这是基于意见的,但既然你想降低它的复杂性,
IF会增加复杂性。因此我认为重载比使用 if 语句更好。 -
如果代码很长,就贴出两个函数的基本结构吧。
-
你真的需要对这个函数有一些了解;我们每个人对一般描述都有自己的解释。对我来说,听起来你有一个 if/else 语句,每个分支上执行的代码几乎相同——在这种情况下,你只需要在 if/else 语句之前执行公共代码。
标签: c++ function overloading