Lebih Muatan Operator: Fungsi Ahli lwn. Fungsi Bukan Ahli
Dalam lebihan muatan operator, pilihan antara fungsi ahli dan bukan ahli menimbulkan kekeliruan . Walaupun fungsi ahli adalah tidak simetri dan fungsi bukan ahli adalah simetri, mengapakah rakan diutamakan dalam senario tertentu?
Fungsi ahli hanya boleh menerima satu parameter eksplisit, kerana penunjuk ini dihantar secara automatik untuk mewakili objek yang memanggil. Asimetri ini mengehadkan perbandingan kepada situasi di mana fungsi ahli digunakan pada operan kiri. Walau bagaimanapun, pendekatan ini gagal apabila operan kiri bukan jenis kelas, seperti cuba membandingkan dua kali dengan objek Sampel.
Untuk menangani had ini, fungsi rakan boleh digunakan untuk membebankan operator. Fungsi rakan mempunyai akses kepada ahli persendirian kelas, membolehkan mereka mengendalikan lebihan muatan pengendali tanpa sekatan asimetri. Pengkompil menterjemahkan ungkapan seperti 10.0 s2 kepada operator (10.0, s2) apabila fungsi rakan digunakan.
Algoritma STL lebih suka versi simetri kerana ia membolehkan perbandingan dalam kedua-dua arah, menghilangkan keperluan untuk susunan eksplisit dalam operan . Walau bagaimanapun, fungsi bukan ahli harus digunakan apabila mungkin untuk meningkatkan enkapsulasi, kerana fungsi rakan membenarkan akses kepada ahli persendirian.
Ringkasnya, fungsi ahli digunakan untuk operator di mana contoh kelas sentiasa terlibat sebagai operan kiri , manakala fungsi rakan mengendalikan situasi di mana contoh kelas boleh sama ada operan. Untuk fleksibiliti dan enkapsulasi yang lebih besar, fungsi bukan ahli harus diutamakan apabila tidak mengakses ahli persendirian.
Atas ialah kandungan terperinci Lebih Muatan Operator Ahli vs. Bukan Ahli: Bilakah Fungsi Rakan Diutamakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!