Rumah > pembangunan bahagian belakang > C++ > Ahli vs. Operator Bukan Ahli Lebih Muatan dalam C : Bila Perlu Menggunakan Yang Mana?

Ahli vs. Operator Bukan Ahli Lebih Muatan dalam C : Bila Perlu Menggunakan Yang Mana?

Susan Sarandon
Lepaskan: 2024-12-31 19:22:09
asal
142 orang telah melayarinya

Member vs. Non-Member Operator Overloading in C  : When to Use Which?

Pembebanan Operator: Memahami Perbezaan antara Fungsi Ahli dan Fungsi Bukan Ahli

Dalam C , lebihan beban operator membolehkan anda mentakrifkan semula tingkah laku pengendali sedia ada untuk jenis yang ditentukan pengguna. Walau bagaimanapun, terdapat dua cara utama untuk melaksanakan pengendali terlampau beban: menggunakan fungsi ahli atau fungsi bukan ahli.

Operator Asimetri: Fungsi Ahli

Seperti yang dinyatakan dalam maklumat yang diberikan, pengendali terlebih beban yang diisytiharkan sebagai fungsi ahli adalah tidak simetri. Ini bermakna ia memerlukan satu parameter secara eksplisit dan tersirat menerima penunjuk ini. Disebabkan asimetri ini, adalah tidak mungkin untuk membandingkan operator secara langsung. Contohnya:

class MyClass {
public:
  MyClass operator+(const MyClass& other);
};
Salin selepas log masuk

Fungsi ahli ini membenarkan ungkapan seperti s1 s2. Walau bagaimanapun, ia tidak boleh mengendalikan ungkapan seperti 10.0 s2, kerana operan pertama bukanlah contoh MyClass.

Operator Simetri: Fungsi Bukan Ahli

Sebaliknya, operator terlampau beban yang diisytiharkan sebagai fungsi bukan ahli, biasanya fungsi rakan, adalah simetri. Ia menerima dua hujah daripada jenis yang sama dan membenarkan perbandingan langsung. Ini menyelesaikan masalah pesanan yang dinyatakan sebelum ini dan membolehkan ungkapan seperti 10.0 s2.

Fungsi Rakan lwn. Fungsi Bukan Ahli

Walaupun fungsi rakan memberikan fleksibiliti yang lebih baik, ia adalah disyorkan untuk menggunakan fungsi bukan ahli apabila boleh. Ini kerana fungsi rakan mempunyai akses kepada ahli peribadi kelas, yang boleh memecahkan enkapsulasi. Hanya apabila akses ahli persendirian diperlukan, fungsi rakan boleh digunakan.

Algoritma dan Operator Simetri STL

Algoritma Perpustakaan Templat Standard (STL) secara eksklusif menggunakan versi simetri lebih muatan pengendali. Ini terutamanya kerana algoritma STL sering beroperasi pada bekas di mana jenis elemen mungkin bukan jenis kelas, yang memerlukan penggunaan fungsi bukan ahli dengan pengendali simetri.

Kesimpulan

Memahami perbezaan antara fungsi ahli dan fungsi bukan ahli dalam beban berlebihan operator adalah penting. Pengendali asimetri sesuai untuk senario tertentu, manakala pengendali simetri memberikan lebih fleksibiliti dan mengekalkan enkapsulasi. Algoritma STL bergantung pada pengendali simetri untuk mengendalikan pelbagai jenis struktur data dengan berkesan.

Atas ialah kandungan terperinci Ahli vs. Operator Bukan Ahli Lebih Muatan dalam C : Bila Perlu Menggunakan Yang Mana?. 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