2010-11-07 6 views

Répondre

9

C ne prend pas en charge l'héritage.

C++ prend en charge l'héritage.

+0

@James, pouvez-vous m'envoyer la référence ?? – Siddiqui

+3

@Arman: Bien sûr. Stack Overflow a [une liste de bons livres de débutant C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) et [une liste de bons livres de débutant C] (http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list). N'importe lequel de ces livres pour débutants contiendrait cette information. –

+1

@Arman - uhmmm .... vous devriez google pour ANSI C Standard + wg14 ... votre commentaire est sous-entendu sonne comme si vous ne croyez pas sa réponse et que vous êtes sceptique .... – t0mm13b

4

La seule différence entre struct et class est la visibilité par défaut des membres et le mode d'héritage par défaut. struct D : B { ... est équivalent à class D : public B { public: ....

+2

En C++ c'est-à-dire ... – Macke

12

Vous pouvez intégrer une structure dans un autre pour simuler l'héritage en C:

typedef struct { 
    int i; 
} base; 

void basefunc(base *b); 

typedef struct { 
    base b; 
    char c; 
} extended; 

extended e; 
/* Initialise extended here */ 
basefunc(&e.b);  /* Use the type checker */ 
basefunc((base*)&e); /* Just make sure you know what you're doing */ 
+0

Oui. Bien qu'il vous laisse avec la syntaxe maladroite «e.b.i» pour accéder aux membres «de base». Mais c'est juste une autre raison d'envelopper tout ceci comme un type opaque ... – dmckee

+3

Ou, comme un pointeur sur une structure est aussi capable de pointer vers son premier membre, vous pouvez le lancer - 'basefunc ((base *) e) ' –

+0

@Pete Kirkham, merci, j'ai ajouté cela à ma réponse avec un avertissement. –