Au niveau du changement de nombre d'attributs, techniquement ça ne change rien : ton pointeur c'est juste une adresse, qu'il pointe sur une zone mémoire d'une quelconque taille ne change rien.
Et pourquoi c'est autorisé, c'est justement pour pouvoir tirer parti de la notion de polymorphisme.
Bonjour, on n'efface pas ses messages après avoir reçu de l'aide, cela rend la discussion incompréhensible. Je recopie le message d'origine et ferme ce sujet.
238 a écrit:
Bonjour,
Pourriez vous m'eclairer sur cette petite question. Je voudrais savoir, comment un objet B, hérité de A, arrive à être contenue dans un pointer de type A?
Exemple:
class A{
private:
int varA;
public:
A(){
}
};
class B : public A{
private:
int varB;
public:
B(){
}
};
int main(){
A *a = new B; // Autorisé mais pourquoi?
}
B à un attribut en plus, et pourtant, il est stocké dans un pointer type A qui lui, n'as que une variable possible varA (Et B en a 2, varA et varB).
PS: Je n'utilise pas de pointer nue, c'est juste une question coté technique. Merci
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C