Maison > développement back-end > C++ > Constructeurs et destructeurs par défaut en C : quand dois-je utiliser '=default' ou '{}' ?

Constructeurs et destructeurs par défaut en C : quand dois-je utiliser '=default' ou '{}' ?

Mary-Kate Olsen
Libérer: 2024-12-06 09:14:10
original
934 Les gens l'ont consulté

Default Constructors and Destructors in C  : When Should I Use

Différences entre "=default" et "{}" pour les constructeurs et les destructeurs par défaut

En C , le constructeur et le destructeur par défaut sont spéciaux fonctions membres qui sont automatiquement générées par le compilateur si elles ne sont pas explicitement définies par l'utilisateur. Cependant, pour certains scénarios, il devient nécessaire de remplacer ces comportements par défaut, posant la question de savoir si "=default" et "{}" offrent la même fonctionnalité.

Destructeurs par défaut

Si un La classe nécessite un destructeur virtuel mais l'implémentation est identique à la version générée par le compilateur, la syntaxe "=default" peut être utilisée. Cela garantit que le compilateur génère le destructeur virtuel sans avoir besoin d'une définition explicite. D'un autre côté, l'utilisation d'une définition vide "virtual ~Widget() {}" permet d'obtenir le même effet, avec un minimum de saisie.

Constructeurs par défaut

Contrairement aux destructeurs, l'impact de "=default " pour les constructeurs par défaut est très différent de "{}." Lors de l'utilisation de "Widget() = default", le compilateur génère automatiquement un constructeur par défaut pour la classe "Widget". Ce constructeur généré se comporte comme si aucun constructeur n'était défini par l'utilisateur. Par conséquent, cela contribue à faire de la classe un « type trivial » dans la terminologie C 11.

À l'inverse, « Widget() {} » crée un constructeur par défaut fourni par l'utilisateur, ce qui empêche la classe d'être considérée comme triviale. C 11 impose des restrictions sur les types triviaux, permettant des opérations telles que memcpy pour une initialisation efficace.

Conclusion

Pour les destructeurs virtuels, "=default" et "{}" se comportent de la même manière. Cependant, pour les constructeurs par défaut, "=default" génère un constructeur par défaut fourni par le compilateur, tandis que "{}" crée un constructeur fourni par l'utilisateur, affectant potentiellement la trivialité de la classe. Le choix entre "=default" et "{}" pour les constructeurs par défaut doit être basé sur le comportement souhaité et les implications pour la trivialité de la classe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal