在最后一行功能中放置或不放回头是否有任何不同?
void InputClass::KeyDown(unsigned int input)
{
// If a key is pressed then save that state in the key array
m_keys[input] = true;
return;
}
答案 0 :(得分:11)
不,没有区别!
void函数中的return 用于在某些条件下提前退出。
实施例:
void f(bool cond)
{
// do stuff here
if(cond)
return;
// do other stuff
}
答案 1 :(得分:8)
如果我们查看C++ draft standard部分6.6.3
返回声明第2段,您的示例在功能上没有区别:
没有表达式和braced-init-list的 return语句只能用于不返回值的函数,,即返回类型为void的函数,构造函数(12.1),或析构函数(12.4)。 [...] 在函数末尾流动等同于没有值的返回; 这会导致值返回函数中的未定义行为。
答案 2 :(得分:1)
在您的特定代码中,不是。但通常如果您希望根据条件从函数中提前返回,请使用return
。
void InputClass::KeyDown(unsigned int input)
{
// If a key is pressed then save that state in the key array
m_keys[input] = true;
if(someCondition) //early return
return;
//continue with the rest of function
//.....
}
答案 3 :(得分:1)
在这种特殊情况下,它绝对没有用处 - 它也不会引起任何问题(例如,假设编译器至少具有一些优化能力,则不会生成额外的代码)。
当然有一个目的是将return
放在void函数的中间,这样就不会执行函数的某些后续部分。
答案 4 :(得分:1)
没有区别,在你的例子中,但是如果你想从函数中提前返回,那么它是有用的
答案 5 :(得分:1)
return
函数中的 void
具有多个角色:
过早结束函数执行(例如算法已完成,不满足前提条件)
在某些情况下,您设计的算法会使85%的案例更快结束。 (因此执行速度更快)让其他15%的情况继续返回(因此在一些罕见的竞争条件下运行速度较慢。
类似于goto end
。
答案 6 :(得分:0)
在这种情况下没有。在其他情况下,可能是因为代码在return语句之后,并且作者希望将其“死”一段时间。它应该在之后删除。
答案 7 :(得分:-1)
不,他们是一样的。
使用return;当你想退出功能时。