2011-05-02 119 views
0

我有一个功能,看起来像这样:当不需要返回值时,我应该使用返回函数吗?

int Game::GetInput() { 
    while (true) { 
     // do stuff 
     if (something) { 
      // do this 
      return 0; 
     } 

     else { 
      // do other stuff 
     } 
    } 
} 

,我想知道,如果它是公共的或正确的有一个返回函数,而不是void函数离职的功能的唯一目的(的除了结束函数之外,返回的值不会在程序中执行任何操作)。这是不错的做法,还是有更好的方法来结束功能?

回答

1

只是使你的功能void,而只需return

// vv void return type 
void Game::GetInput() { 
    while (true) { 
     // do stuff 
     if (something) { 
      // do this 
      return; // <<<< No return value 
     } 

     else { 
      // do other stuff 
     } 
    } 
} 
+0

@vorbis:是的。一个'void'返回类型表示没有要返回的值。 – 2011-05-02 02:26:57

1

您可以轻松地只使用return;不带参数退出void功能。您的上述代码将变为:

void Game::GetInput() { 
    while (true) { 
     // do stuff 
     if (something) { 
      // do this 
      return; 
     } 

     else { 
      // do other stuff 
     } 
    } 
} 
3

void函数没有问题。如果它没有返回任何有用的东西,它应该是无效的。

+0

好吧我会记住这一点 – Christian 2011-05-02 02:29:53

0

如果函数没有有用的值返回,最好不要返回一个值 - 因为调用代码应该检查返回的值。

您的代码可被双简化:

void Game::GetInput() { 
    while (true) { 
     // do stuff 
     if (something) { 
      // do this 
      return; 
     } 
     // do other stuff 
    } 
} 

else是不必要的;如果something为假,执行'做其他事情'的唯一方法是。