Rumah >pembangunan bahagian belakang >C++ >Bilakah Pengkompil C Menjana Pembina Pergerakan dan Operator Tugasan Secara Automatik?

Bilakah Pengkompil C Menjana Pembina Pergerakan dan Operator Tugasan Secara Automatik?

DDD
DDDasal
2024-12-19 09:34:10316semak imbas

When Do C   Compilers Automatically Generate Move Constructors and Assignment Operators?

Penjanaan Automatik Operasi Alih dalam C

Dalam C 98, pengkompil secara automatik boleh menjana pembina salinan dan menyalin pengendali tugasan untuk kelas. Walau bagaimanapun, dengan pengenalan semantik bergerak dalam C 11, persoalan timbul tentang penjanaan automatik operasi pergerakan.

Adakah Move Constructors dan Move Assignment Operator Menjana Secara Automatik?

Tidak, tidak seperti pembina salin dan pengendali tugasan salin, pengkompil tidak menjana operasi alih secara automatik untuk kelas dengan takrif pengguna. pembina atau pengendali tugasan.

Kes Di mana Operasi Pindah Tidak Dijana Secara Automatik

Operasi Pindah tidak dijana secara automatik jika:

  • Kelas mempunyai pembina yang ditentukan pengguna atau pembina salinan.
  • Kelas ini mempunyai pengendali tugasan yang ditetapkan pengguna atau pengendali tugasan salin.
  • Kelas ini mempunyai pemusnah bukan remeh.
  • Kelas ini mempunyai kelas asas dengan pemusnah bukan remeh.
  • Kelas mengandungi ahli yang tidak boleh disalin atau tidak boleh dialih.

Menentukan Automatik Penjanaan Operasi Alih

Untuk menentukan sama ada operasi alih dijana secara automatik untuk kelas, pertimbangkan perkara berikut:

  • Jika kelas hanya mempunyai pembina lalai dan tiada pengguna- pembina atau pengendali tugasan yang ditentukan, operasi alih dijana.
  • Jika kelas mempunyai pembina atau pengendali tugasan yang ditentukan pengguna, anda mesti mengisytiharkan operasi bergerak secara eksplisit.
  • Jika kelas mempunyai pemusnah bukan remeh atau kelas asas dengan pemusnah bukan remeh, anda mesti mengisytiharkan operasi bergerak secara eksplisit.

Pemberhentian Penjanaan Automatik Operasi Pergerakan

Dalam C 20, penjanaan automatik operasi pemindahan ditamatkan jika kelas mengisytiharkan pemusnah atau mana-mana ahli salinan (pembina salinan, operator tugasan salinan). Untuk memastikan keserasian dengan versi C masa hadapan, adalah disyorkan untuk mengisytiharkan operasi pemindahan secara eksplisit untuk kelas yang memerlukannya.

Atas ialah kandungan terperinci Bilakah Pengkompil C Menjana Pembina Pergerakan dan Operator Tugasan Secara Automatik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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