为什么此C ++函数定义不需要大括号?

csg*_*orf 6 c++ syntax function

我在阅读Stroustrup的“编程-使用C ++的原理和实践”时发现,他包含了一个没有花括号的函数,却没有解释自己,网上的人说这是不可能的。

我已经编译了代码,并且可以正常工作。

void f()
    try {} 
    catch(...) {}
Run Code Online (Sandbox Code Playgroud)

我希望从中得到一个编译器错误,但是我没有,并且它工作正常。我正在使用C ++ 17。

Pau*_*ans 6

不需要大括号?

有花括号:

void f() try {} catch(...) {}
             ^^
Run Code Online (Sandbox Code Playgroud)

这是一个功能尝试块

功能尝试块将一系列catch子句与整个功能主体相关联

  • @Borgleader用作构造函数时,例如,您想捕获init列表中的错误。请参阅:/sf/ask/392874051/。常规功能没有区别。 (6认同)