Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Fungsi Rakan Sebaris Boleh Diakses dalam C ?
Mengakses Fungsi Rakan Sebaris: Leksikal dan Skop Sebenar
Apabila mengisytiharkan fungsi rakan sebaris dalam kelas, penting untuk mempertimbangkan bukan sahaja leksikalnya skop tetapi juga skop sebenar mereka. Dari segi leksikal, fungsi sedemikian berada dalam kelas yang ditakrifkan. Walau bagaimanapun, kebolehcapaian sebenar mereka mungkin terhad bergantung pada konteksnya.
Mengikut standard C (ISO/IEC 14882:2011), apabila rakan fungsi diisytiharkan dengan pengecam tidak layak dalam kelas, ia merujuk fungsi dalam skop ruang nama yang terdekat. Walau bagaimanapun, pengisytiharan rakan ini tidak menjadikan fungsi itu kelihatan untuk carian biasa dalam skop itu. Sebaliknya, ia hanya menjadikannya boleh diakses melalui carian bergantung kepada hujah (ADL).
Tingkah laku ini ditekankan dalam 7.3.1.2/3 standard:
"Jika pengisytiharan rakan dalam bukan -kelas tempatan mula-mula mengisytiharkan kelas atau fungsi, kelas atau fungsi rakan ialah ahli ruang nama yang paling dalam Nama rakan tidak ditemui oleh yang tidak layak carian atau melalui carian yang layak sehingga pengisytiharan sepadan disediakan dalam skop ruang nama itu."
Pada dasarnya, fungsi rakan sebaris hanya boleh dipanggil melalui ADL, yang tidak boleh dilakukan apabila tiada hujah disediakan. Oleh itu, percubaan untuk memanggil fungsi tersebut secara langsung melalui skop kelas atau melalui fungsi ahli akan mengakibatkan ralat penyusunan, seperti yang ditunjukkan dalam contoh kod yang disediakan.
Atas ialah kandungan terperinci Bagaimanakah Fungsi Rakan Sebaris Boleh Diakses dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!