Adakah Idiom Safe-Bool Lapuk dalam C 11 dan Seterusnya?

Patricia Arquette
Lepaskan: 2024-11-27 02:27:12
asal
691 orang telah melayarinya

Is the Safe-Bool Idiom Obsolete in C  11 and Beyond?

Adakah Idiom Safe-Bool adalah Peninggalan C 11?

Idiom safe-bool, yang pernah digunakan secara meluas dalam C , telah dihadapi penelitian berdasarkan pengenalan pengendali penukaran boolean yang jelas oleh C 11. Menurut piawai C 11 (§4 [conv] p3), ungkapan boleh ditukar secara tersirat kepada jenis jika pengisytiharan pembolehubah yang sepadan dibentuk dengan baik. Konsep ini, yang dirujuk sebagai "penukaran kontekstual," membenarkan penetapan nilai terus kepada pembolehubah boolean.

Penggantian Safe-Bool

Sebelum C 11 , simpulan bahasa selamat-bool digunakan untuk memberikan kawalan eksplisit ke atas penukaran boolean. Ia melibatkan penentuan fungsi ahli dengan nama eksplisit seperti is_valid() atau is_active() yang mengembalikan nilai boolean. Walau bagaimanapun, dengan pengenalan operator eksplisit bool() const; C 11, pembangun kini boleh mentakrifkan operator penukaran boolean eksplisit untuk kelas mereka.

Penukaran Kontekstual dalam Tindakan

Ungkapan yang melibatkan binaan bahasa berikut memerlukan penukaran kontekstual kepada boolean:

  • jika, sementara, untuk (§6.4 [stmt.select] p4)
  • pengendali logik binari && dan || (§5.14 [expr.log.and/or] p1 untuk kedua-duanya)
  • operator penolakan logik ! (§5.3.1 [expr.unary.op] p9)
  • operator bersyarat ?: (§5.14 [expr.cond] p1)
  • static_assert (§7 [dcl.dcl] p4 )
  • noexcept (§15.4 [except.spec] p2)

Jawapannya

Idiom safe-bool sememangnya dianggap usang dalam C 11. Pengenalan pengendali penukaran boolean eksplisit menyediakan lebih bersih dan lebih banyak lagi. pendekatan logik untuk mengawal penukaran boolean. Dengan membenarkan penugasan terus kepada pembolehubah boolean, penukaran kontekstual menghapuskan keperluan untuk simpulan bahasa safe-bool dan memudahkan kebolehbacaan kod.

Atas ialah kandungan terperinci Adakah Idiom Safe-Bool Lapuk dalam C 11 dan Seterusnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan