2013-10-03 14 views
10

Ich fange an, C++ zu lernen und nur aus Neugier, warum C++ verlangt, dass Sie ein ";" am Ende der Klassendeklaration zum Beispiel:Warum hat C++ ein ";" nach einer Klassendeklaration

class A 
{ 
    /*...*/ 
}; 

In Sprachen wie Java, wird es verwendet, um ein Ende einer Anweisung zu bedeuten.

Was unterscheidet über

int i(5); 

und die Klasse oben in Bezug auf das Semikolon in C++? Behandelt der Compiler die Klasse als Anweisung oder hat sie eine andere Interpretation?

+2

Diese Frage ist sehr nah an einem "Warum ist C++ nicht wie Java?" oder "Was sind die Unterschiede zwischen C++ und Java?". Beide liegen außerhalb des Geltungsbereichs von SO. –

+5

Warum zum Teufel ist das Upvotes bekommen ... –

+5

@ H2CO3, weil * jeder * wer C++ programmierte wurde durch das Vergessen dieser kleinen syntaktischen Kuriosität gebissen. Wenn Sie den Grund für etwas verstehen, werden Sie es wahrscheinlich weniger vergessen. –

Antwort

22

, weil Sie können auch Variablen in der Deklaration definieren:

class A { 
     ... 
} x, y, z; 

Klassendeklarationen in einem Semikolon beenden explizit im Grunde sagen, dass wir nicht erklärt alle Variablen dieser Art sind.

+1

Aber was ist, wenn Sie nicht? – 0x499602D2

+6

@ 0x499602D2: Wie wollen Sie Compiler zu erraten, dass die Sache nach dem '}' keine Variable ist, wenn es kein Terminator gibt? – geoffspear

+2

@ 0x499602D2: Eine leere terminierte Liste benötigt ihren Terminator genauso wie eine lange terminierte Liste. –