Disyorkan, 2024

Pilihan Editor

Perbezaan antara Fungsi Rakan dan Kelas Rakan

Fungsi Rakan dan kelas rakan adalah teknik yang digunakan untuk mengakses ahli persendirian kelas dengan menggunakan kata kunci rakan. Perbezaan antara fungsi rakan dan kelas kawan adalah apabila fungsi rakan digunakan ahli kelas swasta boleh diakses tetapi dalam kelas rakan, hanya nama kelas rakan yang diakses bukan ahli persendirian kelas.

Ciri rakan sama ada digunakan oleh fungsi atau kelas boleh menghasilkan kesan negatif pada rangka kerja berorientasikan objek kerana ia melemahkan enkapsulasi yang bertentangan dengan paradigma berorientasi objek. Inilah sebabnya ciri rakan mesti digunakan secara bijak jika tidak, ia boleh memecah data bersembunyi kod.

Ciri kawan ini tidak bersifat komutatif dan tidak transitif . X adalah rakan Y tidak menyimpulkan bahawa Y juga merupakan kawan X. Jika X adalah kawan Y dan Y adalah kawan Z, tidak membayangkan bahawa X adalah kawan Z.

Carta Perbandingan

Asas untuk perbandinganFungsi RakanKelas Rakan
AsasIni adalah fungsi yang digunakan dengan kata kunci kawan untuk memberikan akses fungsi bukan ahli kepada ahli-ahli persendirian kelas.Ia adalah kelas yang digunakan dengan kata kunci rakan untuk mengakses ahli-ahli swasta kelas lain.
Pengisytiharan ke hadapanMesti digunakan.Tidak wajib.
GunaFungsi kawan boleh digunakan dalam beberapa keadaan pengendalian overloading.Kelas kawan boleh digunakan apabila kelas dibuat di bahagian atas kelas lain.

Definisi Fungsi Rakan

Fungsi rakan digunakan untuk mengakses anggota swasta dan dilindungi kelas dengan membenarkan fungsi bukan ahli untuk mendapatkan akses. Dalam jenis fungsi ini, kata kunci rakan digunakan sebelum nama fungsi pada masa perisytiharan. Terdapat beberapa syarat ketat yang digunakan untuk fungsi kawan. Keadaan pertama ialah fungsi kawan tidak diwarisi oleh kelas kanak-kanak. Keadaan yang kedua adalah penentu kelas penyimpanan mungkin tidak hadir dalam fungsi kawan, yang bermaksud bahawa ia tidak boleh diisytiharkan sebagai statik dan ekstern.

Fungsi rakan tidak dipanggil dengan objek yang memohon kelas. Contoh-contoh fungsi rakan adalah: fungsi global, fungsi anggota kelas, templat fungsi boleh menjadi fungsi kawan. Mari kita fahami dengan bantuan contoh.

 #include menggunakan ruang nama std; kelas pertama {int data; awam: pertama (int i): data (i) {} paparan kekosongan kawan (pertama & pertama); }; void display (const first & a) {cout << "data =" < 

Definisi Kelas Rakan

Sama seperti fungsi kawan kita boleh membuat satu kelas menjadi kawan kelas lain yang disebut sebagai kelas kawan . Sehingga kelas rakan dapat memperoleh akses kepada anggota swasta yang ditentukan dalam kelas lain. Penting untuk diingat bahawa kelas kawan hanya boleh mengakses nama-nama yang ditakrifkan dalam kelas lain dan bukan mewarisi kelas lain. Tepatnya, ahli kelas pertama tidak boleh menjadi ahli kelas kawan. Kelas kawan jarang digunakan.

Kelas rakan boleh diisytiharkan di lebih daripada satu kelas. Ia dianggap sebagai kaedah alternatif ringkas untuk fungsi kawan kerana dengan bantuan ini kita dapat membuat kelas teman yang dapat mengakses seluruh anggota dan fungsi data dan bukannya mencipta pelbagai fungsi kawan.

 #include menggunakan ruang nama std; kelas Pertama {// Nyatakan rakan kelas kawan kawan Kedua; awam: Pertama (): a (0) {} cetak tidak sah () {cout << "Hasilnya adalah" << a << endl; } private: int a; }; kelas Kedua {public: void change (Pertama & yclass, int x) {yclass.a = x; }}; int main () // Output Hasilnya ialah 0 Hasilnya adalah 5 

Perbezaan Utama Antara Fungsi Rakan dan Kelas Rakan

  1. Fungsi kawan adalah fungsi yang dapat mengakses ahli peribadi dan dilindungi kelas. Sebaliknya, kelas kawan adalah kelas yang membantu dalam mengakses ahli-ahli persendirian kelas.
  2. Fungsi kawan dinyatakan dengan memasukkan prototaipnya di dalam kelas, antaranya dengan kawan kata kunci. Begitu juga, kelas kawan juga ditakrifkan menggunakan kawan kata kunci.
  3. Pengisytiharan ke hadapan digunakan dalam hal fungsi teman bertentangan, tidak perlu menggunakannya dalam kelas teman.

Kesimpulannya

Fungsi rakan diperlukan apabila fungsi perlu mengakses dua atau lebih kelas bebas, ahli dalaman. Di sisi lain, kelas kawan diperlukan apabila kelas memerlukan akses kepada ahli kelas lain. Apabila fungsi anggota berganda perlu menjadi kawan fungsi itu, dalam hal ini, lebih baik menggunakan kelas teman.

Top