Rumah > pembangunan bahagian belakang > C++ > Mengapa Pembina Perpindahan Tersirat dan Operator Tugasan Tidak Hadir dalam Draf C 11 Awal?

Mengapa Pembina Perpindahan Tersirat dan Operator Tugasan Tidak Hadir dalam Draf C 11 Awal?

Linda Hamilton
Lepaskan: 2024-12-06 10:18:13
asal
546 orang telah melayarinya

Why Were Implicit Move Constructors and Assignment Operators Absent in Early C  11 Drafts?

Pembina Alih Tersirat dan Operator Tugasan dalam Draf C 11 Awal

Walaupun pelaksanaan meluas pembina salinan lalai dan pengendali tugasan dalam C , ketiadaan pembina langkah lalai dan pengendali tugasan dalam draf awal piawaian C 11 telah menimbulkan persoalan di kalangan pengaturcara.

Sebab Ketiadaan Awal

Penjanaan operasi pergerakan tersirat telah menjadi subjek perdebatan berterusan dalam komuniti C. Draf awal piawaian C 11 kekurangan ciri tersirat ini disebabkan kebimbangan terhadap pemeliharaan kod yang bergantung pada jenis tidak boleh alih. Tambahan pula, tingkah laku std::move dengan objek tidak boleh alih menggunakan operator tugasan merumitkan isu.

Spesifikasi Semasa

Setakat spesifikasi November N3225, jika kelas tidak mentakrifkan pembina bergerak secara eksplisit, ia akan secara tersirat diisytiharkan sebagai lalai di bawah yang berikut syarat:

  • Tiada pembina salinan yang diisytiharkan pengguna
  • Tiada pengendali tugasan salinan yang diisytiharkan pengguna
  • Tiada pengendali tugasan pemindahan yang diisytiharkan pengguna
  • Tidak pemusnah yang diisytiharkan pengguna
  • Tiada pemadaman tersirat pergerakan itu pembina

Syarat yang sama dikenakan pada pengisytiharan tersirat pengendali penugasan pindah. Perubahan ini sejajar dengan prinsip yang digariskan dalam N3203 dan N3201, yang menyokong syarat yang lebih ketat pada penjanaan pergerakan tersirat.

Penyelesaian

Jika tiada operasi pergerakan tersirat pada awal Draf C 11, satu penyelesaian adalah dengan melaksanakan secara manual pengendali tugasan bergerak dan pembina bergerak. Untuk mengelak daripada melaksanakan pengendali ini dalam setiap kelas, penyelesaian makro boleh digunakan. Jawapan GManNickG dalam soalan Stack Overflow memberikan contoh yang sesuai.

Atas ialah kandungan terperinci Mengapa Pembina Perpindahan Tersirat dan Operator Tugasan Tidak Hadir dalam Draf C 11 Awal?. 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