Rumah > pembangunan bahagian belakang > C++ > Mengapa Pengkompil C Tidak Menjana Operator Perbandingan Secara Automatik?

Mengapa Pengkompil C Tidak Menjana Operator Perbandingan Secara Automatik?

Patricia Arquette
Lepaskan: 2024-11-29 04:06:17
asal
400 orang telah melayarinya

Why Don't C   Compilers Automatically Generate Comparison Operators?

Mengapa Pengkompil C Tidak Menjana Operator Perbandingan Secara Automatik

Walaupun keupayaan pengkompil untuk menyediakan kaedah penting seperti pembina lalai dan pengendali tugasan, ia terutamanya mengetepikan pengendali perbandingan yang menentukan, seperti operator== dan operator!=. Peninggalan ini telah menimbulkan persoalan: mengapa?

Satu hujah mencadangkan bahawa jika pengkompil boleh menjana pembina salinan lalai, ia juga harus mampu menyediakan pengendali lalai==(). Walau bagaimanapun, keputusan untuk tidak berbuat demikian mungkin berpunca daripada keengganan Bjarne Stroustrup, pencipta C, untuk memasukkan mekanisme penyalinan lalai.

Dalam bukunya "The Design and Evolution of C ," Stroustrup menyatakan ketidaksetujuannya. operasi salinan lalai, menyatakan bahawa dia sering melarang penyalinan dalam kelasnya sendiri. Keengganan ini berpunca daripada fakta bahawa pembina salinan lalai diwarisi daripada C dan sering disalahgunakan.

Oleh itu, daripada mempersoalkan mengapa C tidak mempunyai pengendali lalai==(), adalah lebih penting untuk mempertimbangkan mengapa ia termasuk tugasan lalai dan pembina salinan. Keputusan ini dibuat kerana keserasian ke belakang dengan C, yang telah menjadi rahmat dan kompromi yang mengecewakan dalam evolusi C.

Bagi mereka yang memilih untuk menghalang operasi salinan lalai, mengisytiharkan pengendali tugasan persendirian dan pembina salinan dalam coretan IDE mereka mungkin merupakan amalan yang berguna. Ini membolehkan penyingkiran eksplisit pengisytiharan ini apabila dikehendaki, memastikan kawalan yang lebih besar ke atas tingkah laku kelas.

Atas ialah kandungan terperinci Mengapa Pengkompil C Tidak Menjana Operator Perbandingan Secara Automatik?. 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