Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Berjaya Membebankan Operator untuk Kenaikan Pra dan Selepas dalam C ?
Lebih muatan untuk Peningkatan Pra dan Selepas: Mendedahkan Kekaburan
Di alam C , pengaturcara sering menghadapi keperluan untuk membebankan operator untuk tersuai kelas. Satu cabaran biasa ialah melebihkan operator untuk kedua-dua operasi pra-kenaikan dan selepas-kenaikan.
Dilema
Melebihi beban operator untuk kedua-dua sebelum dan selepas kenaikan pada mulanya nampak seperti tugas yang mudah. Walau bagaimanapun, terdapat kekaburan asas: pengendali boleh mengembalikan sama ada rujukan kepada objek (awalan) atau nilai sebelum kenaikan (postfix), menghasilkan perkara berikut:
<code class="cpp">class CSample { public: int m_iValue; // Pre-Increment int /*CSample& */ operator++(); // Post-Increment // int operator++(); };</code>
Sekadar membebankan dengan jenis pulangan yang berbeza , seperti dalam contoh di atas, gagal menyelesaikan kekaburan.
Penyelesaian
Penyelesaian kepada dilema ini terletak pada memperkenalkan parameter int tiruan untuk versi postfix, membolehkan kami membezakan antara dua operasi kenaikan:
<code class="cpp">// Pre-Increment CSample& operator++(); // Post-Increment CSample operator++(int);</code>
Pendekatan ini menghapuskan kekaburan dan kini boleh terlebih beban dengan betul untuk kedua-dua kenaikan sebelum dan selepas.
Versi postfix operator mengambil parameter int dummy dan mengembalikan salinan objek sebelum kenaikan. Objek kemudiannya ditambah menggunakan operator pra-kenaikan.
Penggunaan
Dengan lebihan beban ini ditakrifkan, kini kita boleh menggunakan untuk kenaikan sebelum dan selepas:
<code class="cpp">CSample obj; obj++; // Pre-Increment ++obj; // Post-Increment</code>
Kesimpulan
Melebihi beban operator untuk kedua-dua kenaikan sebelum dan selepas memerlukan pertimbangan yang teliti dan pemahaman yang jelas tentang kekaburan yang terlibat. Dengan menggunakan parameter tiruan untuk membezakan antara kedua-dua operasi, kami boleh berjaya melaksanakan kedua-dua gelagat untuk kelas tersuai kami.
Atas ialah kandungan terperinci Bagaimana untuk Berjaya Membebankan Operator untuk Kenaikan Pra dan Selepas dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!