Kelas anda mentakrifkan penukaran eksplisit kepada bool, membolehkan anda menggunakan tika 't'nya secara langsung dalam pernyataan bersyarat. Walau bagaimanapun, penukaran eksplisit ini menimbulkan persoalan: di manakah 'tidak' boleh digunakan sebagai bool tanpa cast?
Senario Penukaran Kontekstual
Piawaian C menentukan empat senario utama di mana nilai boleh ditukar secara kontekstual kepada bool:
Penyata:
jika, sementara, untuk, pernyataan buat sementara
<code class="cpp">if (t) /* statement */;</code>
Ungkapan:
Negasi (!), logik DAN (&&), logik ATAU (||) , pengendali ternary (?)
<code class="cpp">!t t && t2</code>
Ujian Masa Kompilasi:
static_assert, noexcept, eksplisit, jika constexpr (memerlukan operator penukaran constexpr)
<code class="cpp">static_assert(t); noexcept(t)</code>
Algoritma dan Konsep:
NullablePointer, predikat atau pembanding argumen dalam algoritma STL
<code class="cpp">NullablePointer T std::remove_if(first, last, [&](auto){ return t; });</code>
Nota Tambahan:
Atas ialah kandungan terperinci Di luar Pernyataan `jika`: Di Mana Lagi Jenis dengan Penukaran `bool` Eksplisit Boleh Digunakan Tanpa Menghantar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!