如果我有一个返回bool的函数版本,我希望有一个不返回bool的函数版本。我尝试了函数定义的nodiscard,但这两种定义都不允许
返回布尔值的函数与返回void的函数的速度相同吗?
如果没有,那么是否有方法声明函数的void和bool版本
返回布尔值的函数与返回void的函数的速度相同吗
将值分配给bool,并丢弃bool返回值的开销非常小,甚至不明显。因此,从本质上讲,所有实际目的都是肯定的
有没有办法声明函数的void和bool版本
函数不能仅在返回值时重载。您必须使用单独的函数名:
bool myFunctionWithResult()
{
...
回来
}
void myfunction without结果()
{
myFunctionWithResult();
}
void doSomething()
{
bool result=myFunctionWithResult();
//根据需要使用结果。。。
}
void doSomethingElse()
{
myFunctionWithoutResult();
}
或者为其中一个提供一个输出参数:
void myFunction(bool&;result)
{
...
结果=。。。;
}
void myFunction()
{
布尔被忽视;
myFunction(忽略);
}
void doSomething()
{
布尔结果;
myFunction(结果);
//根据需要使用结果。。。
}
void doSomethingElse()
{
myFunction();
}
在这种情况下,您可以将其简化为单个函数:
void myFunction(bool*result=nullptr)
{
...
如果(结果)
*结果=。。。;
}
void doSomething()
{
布尔结果;
我的功能(和结果);
//根据需要使用结果。。。
}
void doSomethingElse()
{
myFunction();
}
不用说,对于bool(或任何其他原语类型),这是不必要的复杂。只要正常地返回bool/原语,并让调用者丢弃该值(如果它愿意)。这种微观优化只有在输出是更复杂的类型时才真正重要,比如说,具有动态分配成员的类,其中返回实例实际上会调用开销,而您有时可能需要避免这种开销