resueltos - Struct heredar en C++
que es un objeto en c++ (5)
Aparte de lo que Alex y Evan ya han declarado, me gustaría añadir que una estructura C ++ no es como una estructura C.
En C ++, una estructura puede tener métodos, herencia, etc. al igual que una clase de C ++.
¿Se puede heredar una struct
en C ++?
En C ++, la herencia de una estructura es la misma que una clase, excepto las siguientes diferencias:
Al derivar una estructura de una clase / estructura, el especificador de acceso predeterminado para una clase / estructura base es público. Y al derivar una clase, el especificador de acceso predeterminado es privado.
Por ejemplo, el programa 1 falla con un error de compilación y el programa 2 funciona bien.
// Program 1
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // Is equivalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // Compiler error because inheritance is private
getchar();
return 0;
}
// Program 2
#include <stdio.h>
struct Base {
public:
int x;
};
struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // Works fine because inheritance is public
getchar();
return 0;
}
Por supuesto. En C ++, las estructuras y las clases son casi idénticas (cosas como el incumplimiento de público en lugar de privado se encuentran entre las pequeñas diferencias).
Sí, struct
es exactamente como class
excepto que la accesibilidad predeterminada es public
para struct
(mientras que es private
para class
).
Sí. La herencia es pública por defecto.
Sintaxis (ejemplo):
struct A { };
struct B : A { };
struct C : B { };