web-dev-qa-db-fra.com

Paramètres du destructeur

L'article Les destructeurs sont-ils surchargeables? parle de surcharger le destructeur.

Cela a soulevé une question: un destructeur peut-il avoir des paramètres?

Je n'ai jamais utilisé ou vu un destructeur avec des paramètres. Je n'ai pas pu trouver un exemple de raison d'utiliser des paramètres pour le destructeur.

34
Thomas Matthews

La section §12.4 du projet n3290 C++ 0x a ceci à dire sur les destructeurs:

Destructeurs

Une syntaxe de déclaration spéciale utilisant un spécificateur de fonction facultatif (7.1.2) suivi de ˜ suivi du nom de classe du destructeur suivi de ne liste de paramètres vide est utilisé pour déclarer le destructeur dans une définition de classe.

(emphase ajoutée)

Donc non, les destructeurs ne prennent pas de paramètres. (La norme de 2003 a le libellé exact du paragraphe ci-dessus.)

42
Mat

Non, c'est la réponse simple. Cela ferait de la gestion automatique des ressources une chienne importante, car vous auriez à vous soucier des paramètres pris par le destructeur et d'où diable vous alliez les obtenir. Qu'en est-il en cas d'exception - comment le compilateur saurait-il quoi passer votre destructeur?

8
Puppy

Non, vous ne les appelez presque jamais directement de toute façon, alors à quoi cela servirait-il?.

Le destructeur est censé détruire l'objet, rien de plus.

2
Bo Persson