Rumah > Artikel > pembangunan bahagian belakang > Constructor Penukaran lwn Operator Penukaran: Manakah yang Mengutamakan dalam C ?
Pembina Penukaran lwn. Operator Penukaran: Keutamaan
Dalam C , kedua-dua pembina penukaran dan pengendali penukaran boleh digunakan untuk menukar objek antara kelas yang berbeza , tetapi keutamaan mereka dalam resolusi lebihan kadangkala boleh membawa kepada hasil yang tidak dijangka.
Soalan 1: Keutamaan Penubuhan
Dalam coretan kod yang disediakan dalam soalan, pengkompil memilih untuk panggil pengendali pengendali penukaran B() walaupun terdapat pembina penukaran yang sepadan. Ini menunjukkan bahawa pengendali penukaran mempunyai keutamaan dalam kes ini.
Menurut piawaian C (8.5/14), "jujukan penukaran takrif pengguna yang boleh menukar daripada jenis sumber kepada jenis destinasi [... ] disenaraikan seperti yang diterangkan dalam 13.3.1.4, dan yang terbaik dipilih melalui resolusi beban lampau (13.3)."
Soalan 2: Falsafah Berorientasikan Objek
Daripada perspektif berorientasikan objek, seseorang mungkin berpendapat bahawa kelas yang mentakrifkan penukaran (dalam kes ini, A) harus mempunyai lebih banyak pendapat tentang cara penukaran dilakukan. Walau bagaimanapun, dalam C , pengkompil terutamanya mempertimbangkan keselamatan dan kecekapan jenis.
Operator penukaran biasanya lebih cekap kerana ia boleh diselaraskan, manakala pembina penukaran memerlukan panggilan eksplisit. Selain itu, pengendali penukaran boleh dibuat const, yang membolehkan untuk mengikat rnilai, memberikan kelebihan dalam situasi tertentu.
Memilih Kaedah Penukaran
Keutamaan antara pembina penukaran dan pengendali penukaran diwujudkan oleh proses resolusi beban lampau yang diterangkan dalam 13.3.3.2/3 standard C. Dalam kes kod yang disediakan, pengendali penukaran dipilih kerana ia mempunyai lebih sedikit kelayakan const dan boleh mengikat kepada nilai A() dengan lebih cekap.
Secara amnya, memilih antara pembina penukaran dan operator penukaran bergantung mengenai keperluan khusus kod tersebut. Jika kecekapan dan pengikatan kepada nilai adalah penting, pengendali penukaran mungkin merupakan pilihan yang lebih baik. Walau bagaimanapun, jika logik penukaran adalah kompleks atau harus dikawal oleh kelas destinasi, pembina penukaran mungkin lebih sesuai.
Atas ialah kandungan terperinci Constructor Penukaran lwn Operator Penukaran: Manakah yang Mengutamakan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!