Est-ce qu'un struct
peut être hérité en C++?
Oui, struct
est exactement comme class
sauf que l'accessibilité par défaut est public
pour struct
(alors que c'est private
pour class
).
Oui. L'héritage est public par défaut.
Syntaxe (exemple):
struct A { };
struct B : A { };
struct C : B { };
Outre ce qu'Alex et Evan ont déjà déclaré, j'aimerais ajouter qu'une structure C++ ne ressemble pas à une structure C.
En C++, une structure peut avoir des méthodes, un héritage, etc., exactement comme une classe C++.
Bien sûr. En C++, les structures et les classes sont presque identiques (des différences, telles que le passage par défaut à public plutôt qu'à privé, font partie des différences).
En C++, l'héritage d'une structure est identique à celui d'une classe, à l'exception des différences suivantes:
Lors de la dérivation d'une structure d'une classe/structure, le spécificateur d'accès par défaut pour une classe/structure de base est public. Et lorsque vous dérivez une classe, le spécificateur d'accès par défaut est privé.
Par exemple, le programme 1 échoue avec une erreur de compilation et le programme 2 fonctionne correctement.
// 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;
}