Apabila mengisytiharkan fungsi ahli dalam C , seseorang mungkin menghadapi penggunaan simbol & dan && selepas senarai parameter. Simbol ini, dikenali sebagai ref-qualifiers, menunjukkan jenis rujukan parameter objek tersirat.
Ampersan tunggal (&) menandakan bahawa fungsi ahli akan digunakan apabila objek adalah rujukan nilai. Rujukan nilai merujuk kepada objek sedia ada yang disimpan di lokasi ingatan tertentu. Coretan kod berikut menunjukkan penggunaannya:
class wrap { public: operator obj() const & { ... } operator obj() && { ... } private: obj data_; };
Fungsi operator obj() dengan & ref-qualifier akan digunakan apabila objek ialah rujukan lnilai. Ini bermakna ia boleh dipanggil menggunakan kedua-dua ungkapan lvalue dan rvalue.
Sekiranya tiada ref-qualifier, parameter objek tersirat dianggap sebagai rujukan lvalue. Ini membolehkan fungsi ahli digunakan dengan kedua-dua ungkapan lvalue dan rvalue. Kod di bawah mempamerkan tingkah laku ini:
struct foo { void bar() {} }; int main() { foo().bar(); // (always fine) foo f; f.bar(); // (always fine) }
Kelayakan semula && menunjukkan bahawa fungsi ahli akan digunakan apabila objek ialah rujukan rnilai. Rujukan rnilai merujuk kepada objek sementara atau dinilai ungkapan yang tidak boleh terikat pada lokasi ingatan tertentu.
Jadual berikut meringkaskan perbezaan antara ampersand tunggal (&) dan tiada ampersand:
Ref-Qualifier | Reference Type | Can be Invoked With |
---|---|---|
& | lvalue reference | lvalue and rvalue expressions |
None | lvalue reference | lvalue and rvalue expressions |
Memahami kelayakan semula ini adalah penting untuk melaksanakan dengan betul fungsi ahli dan menyesuaikan tingkah laku mereka berdasarkan konteks.
Atas ialah kandungan terperinci Fungsi Ahli C: Apakah Maksud `&` dan `&&` dalam Senarai Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!