Maison > développement back-end > C++ > Quand un « opérateur bool » explicite fonctionne-t-il sans conversion en C ?

Quand un « opérateur bool » explicite fonctionne-t-il sans conversion en C ?

Barbara Streisand
Libérer: 2024-10-26 23:46:31
original
500 Les gens l'ont consulté

 When Does an Explicit `operator bool` Work Without Casting in C  ?

Opérateur explicite bool sans conversion

Lors de la conception d'une classe qui a une conversion explicite en bool, on peut se demander où elle peut être utilisée comme booléen sans conversion explicite .

Conversion contextuelle en bool

La norme C définit des scénarios spécifiques dans lesquels une valeur peut être « convertie contextuellement en bool ». Ces situations se répartissent en quatre grandes catégories :

1. Déclarations :

  • if (t) /* déclaration */;
  • pour (; t;) /* déclaration */;
  • while ( t) /* instruction */;
  • do { /* block */ } while (t);

2. Expressions :

  • !t
  • t && t2
  • t || t2
  • t ? "vrai" : "faux"

3. Tests au moment de la compilation :

  • static_assert(t);
  • nosauf(t)
  • explicit(t)
  • if constexpr (t)

4. Algorithmes et concepts :

  • NullablePointer T
  • std::remove_if(...)
  • std::sort(...)

Mises en garde concernant les opérateurs de conversion const et non-const

Il convient de noter qu'une combinaison d'opérateurs de conversion const et non-const peut prêter à confusion. Reportez-vous aux questions connexes ci-dessous pour plus d'informations :

  • [Pourquoi la conversion explicite bool() ne se produit-elle pas dans la conversion contextuelle ?](https://stackoverflow.com/questions/5580156/why- Doesnt-explicit-bool-conversion-happen-in-contextual-conversion)
  • [Pourquoi l'opérateur explicite bool n'agit-il pas comme prévu ?](https://stackoverflow.com/questions/26578447/why -l'opérateur-bool-explicite-n'a-t-il-pas-d'effet-comme-attendu)

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 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