class Animal
{
public:
int a;
double d;
int f(){ return 25;}
};
pour le code On suppose ci-dessus, je tente d'initialiser un objet, en disant new Animal()
, est-ce new()
alloue également la mémoire de la fonction f()
?Est-ce que new() alloue de la mémoire pour les fonctions d'une classe?
En d'autres termes, quelle est la différence dans les termes d'allocation de mémoire si j'avais cette classe à la place et a fait un new Animal()
?:
class Animal
{
public:
int a;
double d;
};
Donc, si ma fonction est une fonction virtuelle (ma classe est abstraite), 'new()' aura-t-il des problèmes pour allouer de l'espace sur le tas? – Moeb
Tout un moyen de fonction virtuelle est que la fonction est ajoutée à la vtable située dans la mémoire statique. Il n'y a qu'une seule copie d'un vtable par classe qui utilise des fonctions virtuelles. –
@Ignacio Je cherche une réponse à: http://stackoverflow.com/questions/2091426/why-cant-we-create-objects-for-an-abstract-class-in-c Je pense que le problème est quelque chose lié à l'allocation de la mémoire, mais je ne peux pas le comprendre. – Moeb