223 votes

Héritage structurel en C++

Est-ce qu'un struct être hérité en C++ ?

339voto

Alex Martelli Points 330805

Oui, struct est exactement comme class sauf que l'accessibilité par défaut est public para struct (alors que c'est private para class ).

153voto

Suvesh Pratapa Points 3735

Oui. L'héritage est public par défaut.

Syntaxe (exemple) :

struct A { };
struct B : A { };
struct C : B { };

56voto

Chad Gorshing Points 999

Outre ce qu'Alex et Evan ont déjà dit, j'aimerais ajouter qu'une structure C++ n'est pas comme une structure C.

En C++, un struct peut avoir des méthodes, un héritage, etc. tout comme une classe C++.

33voto

Neha Agrawal Points 331

En C++, l'héritage d'une structure est le même que celui d'une classe, à l'exception des différences suivantes :

Lorsqu'on dérive 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 l'on dérive une classe, le spécificateur d'accès par défaut est private.

Par exemple, le programme 1 échoue avec une erreur de compilation et le programme 2 fonctionne 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;
}

29voto

Evan Teran Points 42370

Bien sûr. En C++, les structs et les classes sont presque identiques (des choses comme l'utilisation par défaut de public au lieu de private font partie des petites différences).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X