c++ class colon

¿Qué significa "clase:" en C++?



class colon (3)

Nunca lo había visto antes Pensé que era un error tipográfico para ":: sample", pero cuando lo vi compila realmente, estaba muy confundido. ¿Alguien puede ayudarme a averiguar por favor? No creo que sea una etiqueta goto .

void f() { class: sample { // there were some members declared here } x; }


Creo que está definiendo una clase sin nombre derivada de la sample . Y x es una variable de esa clase sin nombre.

struct sample{ int i;}; sample f() { struct : sample { // there were some members declared here } x; x.i = 10; return x; } int main() { sample s = f(); cout << s.i << endl; return 0; }

Código de muestra en ideone: http://www.ideone.com/6Mj8x

PD: ¡Cambié la class a struct por razones de accesibilidad!


Es una clase sin nombre, y los dos puntos significa que hereda en privado de la sample . Véalo como

class Foo : private sample { // ... }; Foo x;


Esa es una clase sin nombre.

Puede usarlos, por ejemplo, para sustituir funciones locales en pre-C ++ 11:

int main() { struct { int operator() (int i) const { return 42; } } nice; nice(0xbeef); }

El colon seguido de la sample simplemente significa derivar de la sample usando la herencia predeterminada . (para estructuras: público, para clases: privado)