¿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)