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 Umwandlung verwendet werden?
Kontextkonvertierungsszenarien
Der C-Standard spezifiziert vier Hauptszenarien, in denen ein Wert kontextabhängig konvertiert werden kann bool:
Anweisungen:
if, while, for, do-while-Anweisungen
if (t)
/* statement */;
Ausdrücke:
Negation (!), logisches UND (&&), logisch ODER (||), ternärer Operator (?)
!t
t && t2
Kompilierungszeittests:
static_assert, noException, explizit, wenn constexpr (constexpr-Konvertierung erforderlich Operator)
static_assert(t);
noexcept(t)
Algorithmen und Konzepte:
NullablePointer, Prädikat- oder Komparatorargumente in STL-Algorithmen
NullablePointer T
std::remove_if(first, last, [&](auto){ return t; });
Zusätzliche Hinweise:
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3