C++ 允许在类定义中使用不必要的分号的目的

C++ 允许在类定义中使用不必要的分号的目的,c++,syntax,C++,Syntax,考虑以下计划: #include <iostream> struct Test { int a; Test(int s) : a(s) { }; // Observe this semicolon int geta() { return a; } }; int main() { Test t(3); std::cout<<t.geta()<<'\n'; } 那么,允

考虑以下计划:

#include <iostream>
struct Test
{
    int a;
    Test(int s) : a(s)
    { };        // Observe this semicolon
    int geta()
    {
        return a;
    }
};
int main()
{
    Test t(3);
    std::cout<<t.geta()<<'\n';
}
那么,允许这个不必要的分号的目的是什么?这有什么用吗?语言标准是否允许使用?< /P> < P>半字节(;)是C++中的空声明。你可以看到

C++类允许在大括号内执行以下操作:
  • 访问说明符列表
  • 成员对象
  • 成员函数声明和定义
  • 参考:


    因此,通过上面的规则,C++中允许使用空声明。这就是为什么你有分号。

    这不就是一个空命令,一个“什么也不做”的命令吗?@Coffee命令在类范围内是不允许的。他说的是类范围,而不是函数范围。一个分号被归类为声明语句,而不是“dosomething”语句。
    int geta()
    {
       return a;
    }; // This also compiles fine without any error or warnings in both g++ & clang