Rumah >pembangunan bahagian belakang >C++ >Mengapa `T&&` Tidak Sentiasa Berkelakuan Seperti Rujukan Nilai R Sebenar?
Mengapa T&& Tidak Berkelakuan Seperti Rujukan Rvalue?
Apabila bekerja dengan lebihan fungsi seperti void f(T&&) dan void f(T& ), amat mengejutkan apabila mendapati f(T&) dipanggil apabila lulus dalam T&&, walaupun sebaliknya tidak benar. Ini disebabkan oleh tingkah laku rujukan nilai dalam C .
Bertentangan dengan gerak hati, T&& bukan sekadar rujukan nilai. Ia adalah rujukan rnilai jenis, yang bermaksud ia hanya boleh mengikat rnilai tetapi sebaliknya berkelakuan seperti lnilai rujukan rnilai jenis. Tingkah laku mengikat ini memastikan bahawa objek tanpa nama dan yang akan kehilangan nama mereka dianggap secara automatik sebagai nilai r.
Walau bagaimanapun, memandangkan T&& mempunyai nama (iaitu, t), ia dianggap sebagai lnilai dan dengan itu memanggil f( T&) terlebih beban. Casting statik t ke T&&& menggunakan f(static_cast
Untuk meringkaskan, peraturan C yang mengawal tingkah laku ini ialah:
Atas ialah kandungan terperinci Mengapa `T&&` Tidak Sentiasa Berkelakuan Seperti Rujukan Nilai R Sebenar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!