课程和结构后的分号

时间:2009-11-23 22:59:06

标签: c++ syntax language-design

  

可能重复:
  Why must I put a semicolon at the end of class declaration in C++?

找到duplicate,请投票结束。

为什么类和结构必须用C ++中的分号结束?

如下面的代码所示:

class myClass
{



};

struct muStruct
{

};

Java或C#中不需要此语法。为什么C ++解析器需要它?

3 个答案:

答案 0 :(得分:6)

这就是为什么......

int a,b,c,d;
int main(void) {
    struct y {
  }; a, b, c, d;
    struct x {
  } a, b, c, d;
}

两个不同的陈述,两个完全不同的含义,都是合法的C / C ++,唯一的区别是结构声明后的;

答案 1 :(得分:4)

因为}之后的下一个单词可以声明所述类型的变量。这是C:

的遗物
struct S { int a; } s;
s.a;

答案 2 :(得分:2)

以下内容在C ++中是合法的:

struct MyStruct
{
} anInstanceOfMyStruct;

struct
{
} anInstanceOfAnUnnamedStruct;

您需要分号来表示您没有创建新实例。 C#和Java的语言设计者显然不认为允许这是他们语言的有用补充。