提问者:小点点

C++中的函数是否可以返回一些东西,然后执行它的代码?


当做这样的事情时:

i2 = i++;

++运算符将返回i,然后它将i递增1。

函数也可以返回一些东西然后执行它的代码吗?


共2个答案

匿名用户

否,一旦函数的作用域结束(在结束的}),就不能执行进一步的代码。

但是,该函数可以存储输入的旧状态,修改输入,并返回输入的旧值。 这给出了在函数返回值后执行代码的效果。 例如:

int f(int &n) {
  int x = n;    // store input
  n = 42;       // input is modified before return
  return x;     // old input is returned
}

int b = f(a);  // b is equal to a
               // but now a is 42

正如您所观察到的,后增量是这种行为有用的一个例子。 另一个例子是std::exchange,它给出了在返回值之后修改输入的外观。

匿名用户

如果您要自己实现后缀增量,您将首先存储原始值,然后使用增量但仍然返回原始值:

Number Number::operator++ (int)
{
  Number ans = *this;
  ++(*this);
  return ans;
}

有关详细信息,您可以查看以下常见问题:https://isocpp.org/wiki/FAQ/operator-overloading#increment-pre-post-overloading

所以在C++中返回后没有函数代码执行。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|中|函数|返回|东西|执行|代码)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?