一个C++类函数应该以}结尾; 还是只有}?

Joh*_*han 5 c++ syntax

关于C++语法的基本问题.

应该以c ++函数结束; 或者没关系?

或者这两个例子有什么区别?

结束;

void Test :: print()
{
  ...
};
Run Code Online (Sandbox Code Playgroud)

没有;

void Test :: print()
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

我已经看过C++代码有和没有,但我没有得到区别.

/谢谢


更新:

在这种情况下; 应该避免,因为它没有做任何有用的事情,甚至可能在将来成为一个问题.

CB *_*ley 11

在类主体之外(其中函数定义可以可选地后跟单个;),函数定义在复合语句的结尾处终止- 即结束}.在命名空间范围内,函数定义的右括号后面的下一个标记必须构成下一个声明的一部分.

在C++ 03中,没有空声明这样的东西,所以放置a ;是非法的,尽管许多实现已经接受了.(虽然C++ 03 简单声明的语法似乎允许缺少decl-specifier-seq和缺少init-declarator-list,只留下a ;,但是有一个语义规则禁止两个可选部分被省略表示在标准的7 [dcl.dcl]/3中.)

在一个简单声明中,只有在声明一个类(第9节)或枚举(7.2)时,也就是说,当decl-specifier-seq包含一个类说明符时,可以省略可选的init-declarator-list,详细说明-type-specifier,带有类键(9.1)或枚举说明符.

C++ 0x引入了一个空声明(这是一个没有效果的声明),所以你可以;在命名空间范围内拥有尽可能多的流氓,尽管没有充分的理由这样做.