Rumah > pembangunan bahagian belakang > C++ > Mengapa Pengkompil C Tidak Menjana Operator Perbandingan Lalai (pengendali == dan operator!=)?

Mengapa Pengkompil C Tidak Menjana Operator Perbandingan Lalai (pengendali == dan operator!=)?

Mary-Kate Olsen
Lepaskan: 2024-11-30 14:38:11
asal
519 orang telah melayarinya

Why Don't C   Compilers Generate Default Comparison Operators (operator== and operator!=)?

Mengapa Pengkompil C Mengelak Menjana Operator Perbandingan Lalai?

Sementara pengkompil C menyediakan pembina lalai, pembina salin, pemusnah dan pengendali tugasan, mereka dengan sengaja mengecualikan operator perbandingan seperti operator== dan operator!=. Keputusan reka bentuk ini berpunca daripada kebimbangan yang dibangkitkan oleh pencipta C Bjarne Stroustrup mengenai kemungkinan perangkap operasi salinan yang dijana secara automatik.

Stroustrup menyatakan tempahannya dalam "The Design and Evolution of C," menyatakan bahawa dia menganggap operasi salinan lalai untuk menjadi tidak diingini dan secara aktif menghalang penggunaannya dalam kebanyakan kelasnya. Keengganan ini timbul daripada warisan C daripada C, di mana pembina salinan lalai dan pengendali tugasan sering digunakan. Walau bagaimanapun, operasi lalai ini boleh membawa kepada tingkah laku yang tidak dijangka apabila digunakan pada kelas dengan dalaman yang kompleks atau halus.

Jika tiada operator perbandingan lalai, pengkompil secara paksa memerlukan takrifan eksplisit untuk operator== dan operator!=. Ini memastikan bahawa pembangun mempertimbangkan dengan teliti implikasi perbandingan kelas dan menentukan pengendali tersuai yang menggambarkan dengan tepat tingkah laku yang dimaksudkan. Pendekatan ini menggalakkan pembangun membuat keputusan termaklum tentang perbandingan kelas dan bukannya bergantung pada kod yang dihasilkan pengkompil yang tersirat atau berkemungkinan salah.

Atas ialah kandungan terperinci Mengapa Pengkompil C Tidak Menjana Operator Perbandingan Lalai (pengendali == dan operator!=)?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan