Skop Fungsi Rakan Sebaris
Dalam konteks C , skop leksikal fungsi rakan sebaris meluas ke kelas yang ditakrifkan di dalamnya. Walau bagaimanapun, penentuan skop sebenar memerlukan penerokaan lanjut.
Piawaian ISO C menentukan bahawa apabila fungsi rakan sebaris diisytiharkan dalam kelas ruang nama berskop, ia menamakan fungsi dalam skop ruang nama tertutup yang terdekat. Jika fungsi itu belum diisytiharkan, pengisytiharan rakan sahaja tidak menjadikannya kelihatan dalam skop itu untuk carian tidak layak.
Sebaliknya, pengisytiharan rakan membenarkan fungsi itu diakses melalui carian bergantung kepada hujah (ADL ). Ini bermakna fungsi rakan boleh dipanggil menggunakan nama yang tidak layak asalkan argumen fungsi mempunyai jenis yang sepadan dengan skop ruang nama yang mengandungi pengisytiharan fungsi.
Oleh itu, fungsi rakan sebaris yang diisytiharkan dalam kelas hanya boleh dipanggil melalui ADL, melainkan ia kemudiannya diisytiharkan atau ditakrifkan dalam skop ruang nama yang dilampirkan. Ini memastikan bahawa fungsi hanya boleh diakses apabila argumen membenarkan peleraian nama yang tidak jelas.
Coretan kod berikut menggambarkan tingkah laku ini:
namespace foo { struct bar { friend void baz(); }; } // Compilation error in main: 'baz' is not accessible through unqualified lookup int main() { foo::baz(); }
Atas ialah kandungan terperinci Bagaimanakah Skop Rakan Sebaris Berfungsi dalam C Sebenarnya Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!