不同的是写void函数返回的方式

Difference in a way of writing a void function return

本文关键字:函数 返回 void 方式      更新时间:2023-10-16

下面是我在这里找到的代码片段

void App::onSave()
{
    if (filename.isEmpty())
        return onSaveAs();
//do saving here
}
void App::onSaveAs()
{
    QString f = QFileDialog::getSaveFileName(NULL, "Save as", "", "*.sb");
    if (!f.isEmpty())
    {
//filename generation
        return onSave();
    }
}

我的问题是:这里写的return onSave();和这样的东西有什么区别吗?

onSave();
return;

它让我感到困惑,因为函数是void类型,不返回任何东西。

c++标准规定:

带有void类型表达式的return语句只能用于返回类型为cv void的函数;表达式在函数返回给调用者之前求值。

所以这两种形式在c++中是等价的。

注意C标准说:

带表达式的返回语句不能出现在返回类型为void的函数中

c++中这种限制的放宽可能与模板有关。

你问:

return onSave();

onSave();
return;