2013-10-03 18 views
10

Sto iniziando a imparare C++ e per curiosità, perché il C++ richiede di inserire un ";" alla fine della dichiarazione di classe ad esempio:Perché C++ ha un ";" dopo una dichiarazione di classe

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

In linguaggi come Java, è utilizzato per indicare la fine di una dichiarazione.

Cosa c'è di diverso

int i(5); 

e la classe di cui sopra per quanto riguarda il punto e virgola in C++? Il compilatore considera la classe come una dichiarazione o ha un'interpretazione diversa per essa?

+2

Questa domanda è molto simile a "Perché il C++ non è come Java?" o "Quali sono le differenze tra C++ e Java?". Entrambi sono al di fuori dell'ambito di SO. –

+5

Perché diamine ci sono questi ascolti .... –

+5

@ H2CO3, perché * tutti * chi programma C++ è stato morso dimenticando questa piccola stranezza sintattica. Quando capisci la ragione di qualcosa, è meno probabile che tu la dimentichi. –

risposta

22

perché si può anche definire le variabili nella dichiarazione:

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

Ending dichiarazioni di classe in un punto e virgola è sostanzialmente dicendo esplicitamente che siamo non dichiarando variabili di questo tipo.

+1

Ma cosa succede quando non lo fai? – 0x499602D2

+6

@ 0x499602D2: come si vuole che il compilatore indovini che la cosa dopo '}' non è una variabile se non c'è un terminatore? – geoffspear

+2

@ 0x499602D2: un elenco terminato vuoto ha bisogno del suo terminatore tanto quanto un elenco terminato da tempo. –