Dalam coretan kod yang diberikan:
class wrap { operator obj() const & { ... } //Copy from me. operator obj() && { ... } //Move from me. };
kami menghadapi dua pengisytiharan fungsi ahli dengan ref berbeza -kelayakan (& dan &&). Walau bagaimanapun, apakah yang dimaksudkan oleh ampersand tunggal (&)?
Ampersan tunggal dalam perisytiharan fungsi ahli bukan statik menunjukkan bahawa fungsi ahli digunakan apabila objek adalah rujukan nilai. Secara lalai, fungsi ahli bukan statik boleh digunakan pada kedua-dua objek lvalue dan rvalue. Walau bagaimanapun, dengan menyatakan &, fungsi hanya boleh menerima lvalues.
Untuk menggambarkan perbezaan:
struct foo { void bar() {} void bar1() & {} void bar2() && {} };
Contoh:
int main() { foo().bar(); // (always fine) foo().bar1(); // doesn't compile because `bar1()` requires an lvalue foo().bar2(); // doesn't compile because `bar2()` requires an rvalue foo f; f.bar(); // (always fine) f.bar1(); f.bar2(); // doesn't compile because `bar2()` requires an rvalue }
Atas ialah kandungan terperinci Apakah Maksud Ampersand Tunggal (&) dalam Perisytiharan Fungsi Ahli C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!