Héritage et polymorphisme en C
Bonjour,
Dans son tutoriel sur l'héritage en C, http://chgi.developpez.com/c/heritage/ , CGi utilise la méthode suivante:
Quand on veut qu'une structure hérite d'une autre structure, le début de la classe fille doit être le même que celui de la classe mère. Les nouveaux attributs sont ajoutés à la fin.
Exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
struct Mere {
int a;
int b;
};
struct Fille {
// membres de Mere
int a;
int b;
// membres de Fille
int c;
} |
Il utilise le polymorphisme:
Code:
1 2 3 4 5
| struct Mere *m;
struct Fille f = { 1, 2, 3 };
m = (struct Mere *) &f;
// utiliser m->a et m->b |
Le C garantit que le premier élément de la structure est à l'addresse 0, donc ça doit marcher pour "a" tout le temps.
Ma question est: est-ce que pour les autres éléments de la structure, ça marchera quelque soit le type et le nombre d'attributs, et quelque soit le compilateur ? Parce que le compilateur peut également ajouter des octets de remplissage (padding).