¿Se struct
puede heredar en C ++?
¿Se struct
puede heredar en C ++?
Respuestas:
Sí, struct
es exactamente igual, class
excepto que la accesibilidad predeterminada es public
para struct
(mientras es private
para class
).
Si. La herencia es pública por defecto.
Sintaxis (ejemplo):
struct A { };
struct B : A { };
struct C : B { };
Aparte de lo que Alex y Evan ya han dicho, me gustaría agregar 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 ++.
Por supuesto. En C ++, las estructuras y las clases son casi idénticas (cosas como el valor predeterminado de público en lugar de privado son algunas de las pequeñas diferencias).
En C ++, la herencia de una estructura es la misma que una clase, excepto las siguientes diferencias:
Cuando se deriva 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;
}