Rumah > pembangunan bahagian belakang > C++ > Bagaimana Resolusi C Overload Mengendalikan Nilai, Rujukan Rvalue dan Parameter Rujukan Nilai Const?

Bagaimana Resolusi C Overload Mengendalikan Nilai, Rujukan Rvalue dan Parameter Rujukan Nilai Const?

DDD
Lepaskan: 2024-12-01 09:40:12
asal
345 orang telah melayarinya

How Does C   Overload Resolution Handle Value, Rvalue Reference, and Const Lvalue Reference Parameters?

Resolusi Terlebih Beban: Nilai, Rujukan Nilai R dan Rujukan Nilai Konst

Dalam resolusi lebihan beban, adalah perkara biasa untuk menghadapi panggilan samar-samar apabila berbilang fungsi berdaya maju berkongsi jenis parameter yang sama. Kes yang sangat menarik timbul apabila lebihan beban berlaku antara nilai, rujukan rnilai dan rujukan nilai const.

Kekaburan dan Penyelesaian

Memandangkan fungsi:

int f( int );
int f( int && );
int f( int const & );
Salin selepas log masuk

panggilan int q = f( 3 ); menjadi samar-samar. Clang dan GCC lebih suka rujukan rvalue berbanding rujukan lvalue apabila f( int ) dialih keluar. Walau bagaimanapun, mengalih keluar sama ada lebihan beban rujukan membawa kepada kekaburan dengan f( int ).

Peraturan untuk Resolusi Lebihan

Leraian lebihan beban adalah berdasarkan mencari "padanan yang lebih baik" yang unik untuk parameter. Sekiranya tiada peraturan khas, ketiga-tiga permulaan (nilai, rujukan nilai dan rujukan nilai tetap) tidak dapat dibezakan.

Walau bagaimanapun, memandangkan rujukan nilai mengikat kepada nilai dan rujukan nilai tetap tidak, maka rujukan rnilai dianggap sebagai padanan yang lebih baik kerana peraturan berikut dalam 13.3.3.2:

S1 binds an rvalue reference to an rvalue and S2 binds an lvalue reference.
Salin selepas log masuk

Peraturan ini tidak terpakai apabila satu permulaan bukan pengikatan rujukan.

Cadangan untuk Piawaian Masa Depan

The pengarang mencadangkan bahawa int && harus diutamakan daripada int dalam piawaian masa hadapan kerana ia memaksa pemulaan mengikat kepada pemula, tidak seperti jenis objek tanpa kekangan. Ini boleh berfungsi sebagai alternatif kepada nilai pas-demi tulen sambil mengelakkan overhed pergerakan.

Atas ialah kandungan terperinci Bagaimana Resolusi C Overload Mengendalikan Nilai, Rujukan Rvalue dan Parameter Rujukan Nilai Const?. 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