Un peut-il struct
être hérité en C ++?
Un peut-il struct
être hérité en C ++?
Réponses:
Oui, struct
c'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é, je voudrais ajouter qu'une structure C ++ n'est pas comme une structure C.
En C ++, une structure peut avoir des méthodes, un héritage, etc. tout comme une classe C ++.
Bien sûr. En C ++, les structures et les classes sont presque identiques (des choses comme la valeur par défaut de public au lieu de private font partie des petites différences).
En C ++, l'héritage d'une structure est identique à une classe à l'exception des différences suivantes:
Lors de la dérivation d'une structure à partir d'une classe / structure, le spécificateur d'accès par défaut pour une classe / structure de base est public. Et lors de la dérivation d'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;
}