【问题标题】:Strange behaviour while returning something from void function [duplicate]从 void 函数返回某些东西时的奇怪行为[重复]
【发布时间】:2020-12-22 13:35:15
【问题描述】:
void f() {
  return delete new int;
}
void f2() {
  return f();
}

为什么这样的代码是正确的?我可以从void 函数返回void 表达式。这是对常识的侮辱。

在这种情况下,С++ 设计者是否预见到,如何从中受益?

【问题讨论】:

  • 在傲慢的表现之下隐藏着一个好问题。 +std::round(0.5)
  • void f() { return void(); } 不那么离谱。

标签: c++


【解决方案1】:

为什么它违反常识?

还有其他情况:没有参数的throwvoid 类型的nullary 运算符。这意味着你可以写

condition ? something() : throw;

catch 块中。它有时很有用——它也有助于泛型编程——为什么仅仅因为它们在精神上很累就不允许它们呢?

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多