À l'origine, j'ai posté cette question en tant que question portant uniquement sur les destructeurs, mais j'y ajoute maintenant l'examen du constructeur par défaut. Voici la question originale :
Si je veux donner à ma classe un destructeur qui est virtuel, mais qui est mais qui est par ailleurs identique à ce que le compilateur générerait, je peux utiliser
=default
:class Widget { public: virtual ~Widget() = default; };
Mais il semble que je puisse obtenir le même effet avec moins de frappe en utilisant une fonction définition vide :
class Widget { public: virtual ~Widget() {} };
Ces deux définitions se comportent-elles différemment ?
Sur la base des réponses postées pour cette question, la situation pour le constructeur par défaut semble similaire. Étant donné qu'il n'y a pratiquement aucune différence de sens entre " =default
" et " {}
"Pour les destructeurs, il n'y a pas non plus de différence de sens entre ces options pour les constructeurs par défaut ? En d'autres termes, en supposant que je veuille créer un type dont les objets seront à la fois créés et détruits, pourquoi voudrais-je dire
Widget() = default;
au lieu de
Widget() {}
?
Je m'excuse si le fait de prolonger cette question après sa publication initiale enfreint certaines règles de l'OS. Poser une question presque identique pour les constructeurs par défaut m'a semblé être l'option la moins souhaitable.