Rumah >pembangunan bahagian belakang >C++ >Kekaburan Jujukan Penukaran: Bilakah Operator Penukaran Trump sebagai Pembina?
Kekaburan Jujukan Penukaran: Keutamaan Pembina Penukaran berbanding Operator
Apabila memulakan objek kelas B daripada objek kelas A, kekaburan boleh timbul jika kedua-dua pembina penukaran dan pengendali penukaran ditakrifkan. Interaksi antara fungsi ini menentukan yang mana satu akan digunakan.
Penubuhan Keutamaan
Menurut standard C (8.5/14), jujukan penukaran yang ditentukan pengguna yang boleh menukar dari A ke B dikira, dan yang terbaik dipilih melalui resolusi beban lampau. Pengendali penukaran dianggap hanya jika pembina penukaran tidak berkenaan.
Transformasi Parameter
Leraian beban berlebihan mengubah fungsi penukaran dan pembina menjadi senarai parameter yang sepadan dengan hujah panggilan . Untuk pengendali penukaran, parameter objek tersirat dijana, mewujudkan pengikatan antara parameter fungsi operator dan objek sumber.
Calon Menang
Operator penukaran menang kerana peraturan "kelayakan const paling sedikit" (13.3.3.2/3). Dalam kes ini, pembina B(const A&) mempunyai rujukan const sebagai parameternya, manakala pengendali pengendali penukaran B() mempunyai rujukan bukan const. Memandangkan objek sumber ialah nilai r (sementara), rujukan bukan const boleh mengikatnya.
Perspektif Berorientasikan Objek
Dari sudut pandangan berorientasikan objek, pilihan lalai operator penukaran A ke atas pembina B menunjukkan bahawa tanggungjawab adalah pada kelas sumber (A) untuk menentukan prosedur penukaran. Walau bagaimanapun, masih boleh dipertikaikan sama ada B, sebagai kelas destinasi, harus mempunyai tanggungjawab utama untuk penukaran ini.
Atas ialah kandungan terperinci Kekaburan Jujukan Penukaran: Bilakah Operator Penukaran Trump sebagai Pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!