Maison >développement back-end >C++ >Que signifie « = delete » dans les déclarations de fonctions C ?

Que signifie « = delete » dans les déclarations de fonctions C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-22 19:59:16467parcourir

What does

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!

Déclaration:
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