Rumah >pembangunan bahagian belakang >C++ >Apakah beberapa alternatif kepada fungsi rakan?

Apakah beberapa alternatif kepada fungsi rakan?

王林
王林asal
2024-04-16 17:18:011135semak imbas

Alternatif kepada fungsi rakan ialah: Kaedah kelas merangkum: Tentukan kaedah dalam bahagian peribadi kelas dan dedahkannya sebagai fungsi rakan untuk mengekalkan pengkapsulan dan membenarkan akses luaran kepada ahli persendirian. Mod jambatan: Gunakan kelas jambatan untuk mengandungi penuding ke kelas sasaran dan tambahkan fungsi rakan padanya untuk mewakilkan kaedah kelas sasaran. Metaprogramming templat: Gunakan metaprogramming templat untuk memanipulasi ahli kelas pada masa penyusunan untuk membenarkan akses kepada ahli persendirian.

Apakah beberapa alternatif kepada fungsi rakan?

Alternatif kepada fungsi rakan

Fungsi rakan ialah jenis fungsi khas yang boleh mengakses ahli persendirian kelas lain. Walaupun fungsi rakan adalah mudah, ia juga boleh memecahkan enkapsulasi. Oleh itu, apabila mereka bentuk kelas, sebaiknya elakkan menggunakan fungsi rakan sebanyak mungkin.

Berikut ialah beberapa alternatif kepada fungsi rakan:

Kaedah kelas merangkum:

Tentukan kaedah dalam bahagian peribadi kelas dan dedahkannya sebagai fungsi rakan. Ini mengekalkan enkapsulasi sambil masih membenarkan fungsi luaran mengakses ahli persendirian.

Gunakan corak jambatan:

Buat kelas jambatan yang mengandungi penunjuk ke kelas destinasi. Tambahkan fungsi rakan pada kelas jambatan, dan kemudian wakilkan kaedah kelas sasaran kepada fungsi rakan.

Menggunakan metaprogramming templat:

Gunakan metaprogramming templat pada masa penyusunan untuk memanipulasi ahli kelas. Kaedah ini lebih kompleks, tetapi membenarkan akses kepada ahli persendirian pada masa jalan.

Kes praktikal:

Andaikan kita ada Person 类,其私有成员为 nameage。我们要定义一个 printInfo 函数来打印 Person maklumat.

rreeee

Atas ialah kandungan terperinci Apakah beberapa alternatif kepada fungsi rakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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