Comprendre la signification de "= delete" dans les déclarations de fonction
En C 11, la syntaxe "= delete" est utilisée pour supprimer un fonction, empêchant efficacement son utilisation. Il est couramment utilisé pour interdire la copie ou pour restreindre certaines conversions.
Suppression des constructeurs de copie et des opérateurs d'affectation
Le cas d'utilisation le plus courant de "= delete" est peut-être de interdire la copie. Par exemple, si nous avons une classe appelée "my_class" que nous ne voulons pas copier, nous pouvons déclarer :
class my_class { public: ... my_class(const my_class &) = delete; ... };
Cette déclaration empêche le compilateur de générer un constructeur de copie et un opérateur d'affectation par défaut pour " my_class."
Prévenir les conversions indésirables
Une autre utilisation de "= delete" est pour interdire les conversions de types spécifiques. Par exemple, si nous avons une classe "Z" que nous voulons construire uniquement à partir de valeurs "long long", nous pouvons utiliser "= delete" pour empêcher les conversions de types plus petits :
struct Z { public: ... Z(long long); // can initialize with a long long Z(long) = delete; // but not anything less };
Modificateurs de fonctions supplémentaires
À part "= 0" (qui définit la fonction sur virtuel pur) et "= delete" (qui supprime la fonction), il n'y a pas d'autre fonction modificateurs en C . Cependant, d'autres mots-clés tels que "override" et "final" peuvent être utilisés pour modifier le comportement des fonctions virtuelles.
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!