Suite à une discussion (lien), je me suis rendu compte que les classes de la STL ne déclarent pas leur destructeur virtuel.
Or, j'hérite de certaines de ces classes dans mon code (pour enrichir la liste des fonctions membres, ou tout simplement pour faciliter l'écriture) exemple :
En faisant des recherches, j'ai pu lire ça et là que c'était une mauvaise pratique, et j'aimerai savoir pourquoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
Au final, le fait que le destructeur ne soit pas virtuel n'est pas grave, puisque dans tous les cas le destructeur de la classe dérivée ne fait strictement rien. Celui de std::pair<> sera toujours appelé, quoi qu'il arrive, donc pas de problème de ce côté là.
Est-ce une question de performances ?
Je sais que je peux utiliser une classe du style (c'est ce que je faisais au début) :
Dans le cas de conteneurs complexes (map, ...), c'est beaucoup de code pour pas grand chose, et ça implique plus de conversions/copies...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11

 

 
		
		 
        

 
			
			

 
  
 
 
   
 


 Hériter des classes de la STL ?
 Hériter des classes de la STL ?
				 Répondre avec citation
  Répondre avec citation


 
  
  
  
			 
   Envoyé par Kalith
 Envoyé par Kalith
					

 
			 
			

 Je n'aime pas les fonctions libres en général.
 Je n'aime pas les fonctions libres en général.
 
						 
 
 
			 )
)
 
			
Partager