2013-10-03 17 views
10

Zaczynam się uczyć języka C++ i właśnie z ciekawości, dlaczego C++ wymaga umieszczenia ";" Na koniec deklaracji klasy na przykład:Dlaczego C++ ma ";" po deklaracji klasy

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

W językach takich jak Java, jest używany do oznaczać kres oświadczenia.

Jaka jest różnica

int i(5); 

a klasa powyżej w odniesieniu do średnikiem w C++? Czy kompilator traktuje klasę jako instrukcję, czy też ma dla niej inną interpretację?

+2

To pytanie jest bardzo podobne do "Dlaczego C++ nie przypomina Java?" lub "Jakie są różnice między C++ i Javą?". Oba są poza zakresem SO. –

+5

Dlaczego, do cholery, jest to coraz upvotes ... –

+5

@ H2CO3, ponieważ * każdy *, który programuje C++ został ukąszony przez zapomnienie tego małego syntaktycznego dziwactwa. Kiedy zrozumiesz powód czegoś, mniej prawdopodobne, że go zapomnisz. –

Odpowiedz

22

ponieważ można także definiować zmienne w deklaracji:

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

Ending deklaracji klasy w średnikiem jest w zasadzie mówią wyraźnie, że jesteśmy nie deklarowania żadnych zmiennych tego typu.

+1

Ale co, jeśli nie? – 0x499602D2

+6

@ 0x499602D2: jak chcesz, aby kompilator odgadł, że rzecz po '}' nie jest zmienną, jeśli nie ma terminatora? – geoffspear

+2

@ 0x499602D2: Pusta, zakończona lista wymaga terminatora tak samo jak długo zakończonej listy. –