在void函数中返回的目的是什么

时间:2013-09-05 13:54:40

标签: c++

在最后一行功能中放置或不放回头是否有任何不同?

void InputClass::KeyDown(unsigned int input)
{
    // If a key is pressed then save that state in the key array
    m_keys[input] = true;
    return;
}

8 个答案:

答案 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具有多个角色:

  1. 过早结束函数执行(例如算法已完成,不满足前提条件)

  2. 在某些情况下,您设计的算法会使85%的案例更快结束。 (因此执行速度更快)让其他15%的情况继续返回(因此在一些罕见的竞争条件下运行速度较慢。

  3. 类似于goto end

答案 6 :(得分:0)

在这种情况下没有。在其他情况下,可能是因为代码在return语句之后,并且作者希望将其“死”一段时间。它应该在之后删除。

答案 7 :(得分:-1)

不,他们是一样的。

使用return;当你想退出功能时。