【问题标题】:Calling a function from the return statement of a void function从 void 函数的 return 语句调用函数
【发布时间】:2015-02-22 09:08:36
【问题描述】:

如果我从一个 void 函数返回一个 void 函数,该函数会在返回之前被调用吗?

示例:

#include <iostream>
void one ( ) { std::cout << "Hello world.\n"; }
void two ( ) { return one ( ); }
int main ( ) { two ( ); }

将“Hello world”。打印到屏幕上?

【问题讨论】:

  • 你没有一个可以用来测试的编译器吗?
  • 编译时没有警告吗?
  • @πάνταῥεῖ:它应该可以编译。这是void 被特殊情况视为完整类型的两种情况之一(据我所知)。
  • @πάνταῥεῖ 没有警告。我看不到任何值得警告的东西。
  • @Cheersandhth.-Alf 应该有一个关于void not being ignored as it shouldreturn 的警告。

标签: c++ c++11


【解决方案1】:

是的,“你好,世界”。将打印到屏幕上,因为函数 one 在函数 two 返回之前被调用。

【讨论】:

  • 加 1 因为在这个答案上有负分是完全误导的。天哪。匿名投票者再次松散。
【解决方案2】:

是的。来自 N3337(C++11 标准草案):

[stmt.return]/3 带有类型表达式的 return 语句 void只能在返回类型为cv的函数中使用void; 表达式在函数返回之前被计算 来电者。

【讨论】:

  • 我希望有人能在标准中找到一些东西来证实我的观察。谢谢!
猜你喜欢
  • 2020-01-18
  • 2017-12-04
  • 2012-12-09
  • 1970-01-01
  • 2015-12-04
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
相关资源
最近更新 更多