关于 C++ 语法的基本问题。
C++ 函数应该以 ; 结尾吗?还是没关系?
或者这两个例子有什么区别?
有结局;
void Test :: print()
{
...
};
没有;
void Test :: print()
{
...
}
我见过有和没有的 C++ 代码, 但我不明白其中的区别。
/谢谢
更新:
在这种情况下;应该避免,因为它没有做任何有用的事情,甚至可能在将来成为一个问题。
最佳答案
在类主体之外(其中函数定义可以选择性地后跟单个 ;
),函数定义由 复合语句 结束- 这是结束 }
。在命名空间范围内,函数定义 的右大括号之后的下一个标记必须构成下一个声明的一部分。
在 C++03 中,没有 empty-declaration 这样的东西,所以放置 ;
是非法的,尽管被许多实现所接受。 (尽管 C++03 simple-declaration 的语法似乎允许缺少 decl-specifier-seq 和缺少的 init-declarator-list,只留下一个 ;
,在标准的 7 [dcl.dcl]/3 中有一个语义规则禁止两个可选部分被遗漏。)
In a simple-declaration, the optional init-declarator-list can be omitted only when declaring a class (clause 9) or enumeration (7.2), that is, when the decl-specifier-seq contains either a class-specifier, an elaborated-type-specifier with a class-key (9.1), or an enum-specifier.
C++0x 引入了一个empty-declaration(这是一个没有效果的声明),因此你可以在命名空间范围内拥有任意数量的流氓;
尽管没有充分的理由这样做。
关于c++ - 一个 C++ 类函数应该以 } 结尾吗?或者只有一个}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487849/