Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Berjaya Membebankan Operator untuk Kenaikan Pra dan Selepas dalam C ?

Bagaimana untuk Berjaya Membebankan Operator untuk Kenaikan Pra dan Selepas dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-10-30 09:07:02
asal
529 orang telah melayarinya

How to Successfully Overload the    Operator for both Pre and Post Increment in 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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