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

Mary-Kate Olsen
Lepaskan: 2024-10-30 09:07:02
asal
390 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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!