Rumah >pembangunan bahagian belakang >C++ >Mengapakah Resolusi Lebihan Sarat Antara `int`, `int&&` dan `const int&`?
Pertimbangkan senario berikut:
int f( int ); int f( int && ); int f( int const & ); int q = f( 3 );
Memanggil keputusan f(3) dalam resolusi lebihan yang tidak jelas. Menghapuskan f( int ) menyebabkan Clang dan GCC mengutamakan rujukan rnilai berbanding rujukan lnilai. Walau bagaimanapun, mengalih keluar sama ada lebihan beban rujukan membawa kepada kekaburan dengan f( int ).
Leraian lebihan beban biasanya mengikut susunan separa yang ketat. Walau bagaimanapun, dalam kes ini, int nampaknya bersamaan dengan dua konsep yang tidak setara antara satu sama lain. Peraturan khusus yang mengawal situasi ini adalah seperti berikut:
13.3.3.2 standard C menyediakan peraturan khas untuk langsung pengikatan rujukan:
Jika S1 dan S2 ialah pengikatan rujukan (8.5.3) dan tidak merujuk kepada parameter objek tersirat bagi fungsi ahli bukan statik yang diisytiharkan tanpa kelayakan semula, dan S1 mengikat rujukan rnilai kepada nilai r dan S2 mengikat rujukan lnilai, kemudian S1 ialah padanan yang lebih baik daripada S2.
Peraturan ini tidak terpakai apabila salah satu permulaan ialah bukan rujukan yang mengikat.
The idea untuk menjadikan pengikatan rujukan padanan yang lebih baik daripada pengikatan bukan rujukan telah dicadangkan. Untuk memulakan perbincangan mengenai topik ini, disyorkan untuk menyiarkan cadangan sedemikian ke forum Cadangan Masa Depan ISO C.
Atas ialah kandungan terperinci Mengapakah Resolusi Lebihan Sarat Antara `int`, `int&&` dan `const int&`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!