Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Skop dan Kebolehcapaian Fungsi Rakan Sebaris Berfungsi dalam C ?

Bagaimanakah Skop dan Kebolehcapaian Fungsi Rakan Sebaris Berfungsi dalam C ?

DDD
Lepaskan: 2024-12-16 20:44:10
asal
438 orang telah melayarinya

How Does the Scope and Accessibility of Inline Friend Functions Work in C  ?

Fungsi Rakan Sebaris: Skop dan Kebolehcapaian

Apabila mentakrifkan fungsi rakan sebaris dalam kelas, skopnya dipengaruhi terutamanya oleh lampiran terdekat ruang nama. Pengisytiharan rakan memperkenalkan nama fungsi ke dalam ruang nama, tetapi ia tidak serta-merta menjadikan fungsi itu kelihatan untuk carian biasa dalam skop itu.

Mengikut piawaian C (ISO/IEC 14882:2011), "jika a pengisytiharan rakan dalam kelas bukan tempatan mula-mula mengisytiharkan kelas atau fungsi, kelas atau fungsi rakan ialah ahli ruang nama yang paling dalam." Ini bermakna nama fungsi rakan pada mulanya tidak ditemui melalui carian yang tidak layak atau layak dalam skop ruang nama.

Hanya apabila pengisytiharan yang sepadan disediakan dalam skop ruang nama itu sendiri, sama ada sebelum atau selepas definisi kelas yang memberikan persahabatan, adakah fungsi itu akan dapat dilihat melalui carian tanpa kelayakan. Selain itu, fungsi rakan masih boleh dipanggil melalui carian bergantung kepada hujah, yang mempertimbangkan fungsi daripada ruang nama dan kelas yang dikaitkan dengan jenis argumen.

Sebagai contoh, kod yang disediakan dalam soalan mentakrifkan fungsi rakan sebaris bernama baz dalam kelas bar dalam ruang nama foo. Walau bagaimanapun, percubaan untuk memanggil baz dari skop yang berbeza dalam program mengakibatkan ralat kerana fungsi tidak dapat dilihat melalui carian biasa:

  • foo::baz() gagal kerana baz bukan ahli foo ruang nama.
  • foo::bar::baz() gagal kerana baz bukan ahli bar kelas.
  • foo::bar::call_friend() gagal kerana baz tidak diisytiharkan dalam skop fungsi ahli call_friend.

Oleh itu, fungsi rakan sebaris mempunyai kebolehaksesan terhad dan skop. Mereka terutamanya dikenali kerana keupayaan mereka untuk mengakses ahli peribadi dan dilindungi kelas tanpa menyatakan nama kelas sebagai kelayakan. Walau bagaimanapun, keterlihatan mereka dalam skop sekeliling adalah terhad sehingga pengisytiharan yang sepadan disediakan dalam ruang nama atau melalui carian bergantung kepada hujah.

Atas ialah kandungan terperinci Bagaimanakah Skop dan Kebolehcapaian Fungsi Rakan Sebaris Berfungsi dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan