Rumah >pembangunan bahagian belakang >C++ >Mengapa Berikan Pembolehubah dalam jika Syarat?
Mengapa Berikan Pembolehubah dalam Syarat if?
Apabila menulis kod, adalah perkara biasa untuk menggunakan pernyataan if untuk menyemak syarat dan melaksanakan kod tertentu jika syarat dipenuhi. Walau bagaimanapun, dalam beberapa keadaan, ia boleh memberi manfaat untuk menetapkan pembolehubah dalam keadaan if.
Tugasan dengan Jenis Casting
Satu sebab untuk menetapkan pembolehubah dalam if pernyataan adalah untuk jenis tuangan. Katakan anda mempunyai kelas asas Base dan kelas terbitan Derived. Untuk menyemak sama ada objek jenis Base juga jenis Derived, anda boleh menggunakan pemutus dinamik:
<code class="cpp">if (Derived* derived = dynamic_cast<Derived*>(base)) { // do stuff with `derived` }</code>
Dalam contoh ini, jika objek yang ditunjuk oleh asas adalah jenis Derived atau subkelas, ia akan ditugaskan kepada pembolehubah yang diterbitkan. Ini membolehkan anda bekerja dengan objek sebagai objek Terbitan.
Mengendalikan Perbezaan Semantik
Sebab lain untuk menetapkan pembolehubah jika keadaan adalah untuk mengendalikan perbezaan semantik antara jenis yang berbeza . Walaupun dua jenis mempunyai kelas asas yang sama, mereka mungkin mempunyai fungsi yang berbeza atau fungsi yang berbeza. Dengan memberikan pembolehubah kepada jenis tertentu, anda boleh menghidupkan perbezaan semantik itu:
<code class="cpp">if (Derived* derived = dynamic_cast<Derived*>(base)) { // do stuff with `derived` that Base doesn't have }</code>
Amaran dan Ralat Pengkompil
Walaupun mungkin perkara biasa untuk melihat pembolehubah tugasan dalam jika keadaan dalam C , adalah penting untuk ambil perhatian bahawa pengkompil tidak selalu memberikan amaran atau ralat untuk amalan ini. Sebabnya ialah dalam beberapa kes, tugasan itu boleh sah. Sebagai contoh, jika tugasan adalah sebahagian daripada operator ternary, ia dianggap sebagai kenyataan dan tidak menimbulkan sebarang isu kompilasi.
Atas ialah kandungan terperinci Mengapa Berikan Pembolehubah dalam jika Syarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!