Heim > Backend-Entwicklung > C++ > Hauptteil

Jenseits von „if'-Anweisungen: Wo sonst kann ein Typ mit einer expliziten „bool'-Konvertierung ohne Umwandlung verwendet werden?

Linda Hamilton
Freigeben: 2024-10-30 04:33:02
Original
998 Leute haben es durchsucht

Beyond `if` Statements: Where Else Can a Type with an Explicit `bool` Conversion Be Used Without Casting?

Kontextuelle Konvertierung in bool ohne Umwandlung zulässig

Ihre Klasse definiert eine explizite Konvertierung in bool, sodass Sie ihre Instanz „t“ direkt in bedingten Anweisungen verwenden können. Diese explizite Konvertierung wirft jedoch die Frage auf: Wo sonst kann „t“ als Bool ohne Besetzung verwendet werden?

Kontextuelle Konvertierungsszenarien

Der C-Standard spezifiziert vier Hauptszenarien, in denen ein Wert kontextabhängig in bool konvertiert werden kann:

Anweisungen:

  • if-, while-, for-, do-while-Anweisungen

    <code class="cpp">if (t)
      /* statement */;</code>
    Nach dem Login kopieren

Ausdrücke:

  • Negation (!), logisches UND (&&), logisches ODER (||) , ternärer Operator (?)

    <code class="cpp">!t
    t && t2</code>
    Nach dem Login kopieren

Kompilierungszeittests:

  • static_assert, noexclusive, explizit, if constexpr (erfordert den Konvertierungsoperator constexpr)

    <code class="cpp">static_assert(t);
    noexcept(t)</code>
    Nach dem Login kopieren

Algorithmen und Konzepte:

  • NullablePointer, Prädikat oder Komparator Argumente in STL-Algorithmen

    <code class="cpp">NullablePointer T
    std::remove_if(first, last, [&](auto){ return t; });</code>
    Nach dem Login kopieren

Zusätzliche Hinweise:

  • Einschränkende Konvertierungen von anderen Ganzzahlen als 0 und 1 sind in nicht zulässig Tests zur Kompilierungszeit (ab C 26).
  • Das Mischen von const- und nicht-const-Konvertierungsoperatoren kann zu Verwirrung führen.

Das obige ist der detaillierte Inhalt vonJenseits von „if'-Anweisungen: Wo sonst kann ein Typ mit einer expliziten „bool'-Konvertierung ohne Umwandlung verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!