Supposons que j'ai créé une liste liée. Il a son propre destructeur, ce qui libère la mémoire. Cette liste liée ne surcharge pas de nouveau ou ne supprime pas.A propos des constructeurs/destructeurs et des opérateurs nouveaux/supprimés en C++ pour les objets personnalisés
Maintenant, j'essaye de créer un tableau desdites listes liées (hachage ouvert, si je comprends bien). Ensuite, j'alloue la mémoire nécessaire dans le constructeur de cette classe de hachage ouverte. Le nouvel opérateur appelé dans le constructeur est suffisant pour allouer correctement la mémoire pour le tableau, n'est-ce pas? Je ne suis pas sûr parce que je n'ai pas surchargé pour la classe Linked List.
Aussi, en supposant que mon tableau de Listes Liées est appelé des éléments, pourrais-je simplement écrire "delete [] elements" dans le destructeur? Est-ce que cela appelle le destructeur pour chaque élément du tableau et libère correctement la mémoire? Enfin, si mes deux suppositions sont correctes (ie, je n'ai pas besoin de surcharger new et supprimer pour les utiliser avec ma classe personnalisée), à quoi ça sert de surcharger de tels opérateurs?
Si vous devez utiliser une nouvelle utilisation 'shared_ptr' ou' unique_prt'. les deux ont été introduits dans C++ 11 STL. pointeurs partagés fera la tenue de livres de supprimer automatiquement. note pour les tableaux par défaut Deleter fourni par 'appels shared_ptr' supprimer, ne pas supprimer [] donc utiliser les fonctions lambda ' std :: shared_ptr p (new int [10], [] (int * p) { supprimer [] p; }); ' ou ' std :: shared_ptr p (new int [10], std :: default_delete ()); ' ou à l'aide aide fournie par unique_ptr qui appelle de suppression [] 'std :: unique_ptr p (nouveau int [10], [] (int * p) { delete [] p; }); –
katta