2011-05-02 100 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爲假,執行'做其他事情'的唯一方法是。

相關問題