0

我有一个看起来像这样的函数:

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

        else {
            // do other stuff
        }
    }
}

我想知道为了离开函数的唯一目的而使用返回函数而不是 void 函数是否常见或适当(除了结束函数之外,返回的值在程序中不会做任何事情)。这是一种好的做法,还是有更好的方法来结束函数?

4

4 回答 4

3

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

于 2011-05-02T02:24:40.010 回答
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
        }
    }
}
于 2011-05-02T02:23:05.797 回答
1

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

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

        else {
            // do other stuff
        }
    }
}
于 2011-05-02T02:24:09.417 回答
0

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

您的代码可以加倍简化:

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

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

于 2011-05-02T02:38:15.920 回答