Rumah >pembangunan bahagian belakang >C++ >Mengapa Perlaksanaan Alih Lalai Tidak Hadir dalam Draf C 11 Awal?

Mengapa Perlaksanaan Alih Lalai Tidak Hadir dalam Draf C 11 Awal?

Barbara Streisand
Barbara Streisandasal
2024-11-19 19:13:02276semak imbas

Why Were Default Move Implementations Absent in Early C  11 Drafts?

Mengapa Perlaksanaan Alih Lalai Tidak Hadir dari Draf C 11 Awal?

Dalam versi awal piawai C 11, penjanaan tersirat pembina bergerak dan pengendali tugasan ialah topik perbahasan. Ini membawa kepada perubahan dalam draf seterusnya, mengakibatkan tingkah laku berikut dalam penyusun yang tersedia pada masa ini:

Semantik Alih Tersirat

Sejak keluaran November C Standard (N3225), pembina dan tugasan langkah tersirat pengendali boleh dijana di bawah syarat berikut:

  • Kelas tidak mempunyai pengisytiharan pengguna pembina salin.
  • Kelas tidak mempunyai pengendali tugasan salinan yang diisytiharkan pengguna.
  • Kelas tidak mempunyai pengendali tugasan pemindahan yang diisytiharkan pengguna.
  • Kelas tidak mempunyai pengisytiharan pengguna. pemusnah.
  • Pembina bergerak tidak akan ditakrifkan secara tersirat sebagai dipadamkan.

Menjelaskan Ketiadaan dalam Draf Awal

Keputusan untuk tidak memasukkan pelaksanaan pembina/tugasan pindah lalai dalam draf awal adalah hasil daripada kebimbangan tentang potensi kekeliruan dan tingkah laku yang tidak dijangka . Walau bagaimanapun, semakan seterusnya telah menangani kebimbangan ini dengan mengetatkan syarat untuk penjanaan pergerakan tersirat.

Penyelesaian

Jika anda sedang mencari cara untuk menggunakan semantik pindah tanpa menulis pembina/operator tugasan secara eksplisit , anda boleh menggunakan [GManNickG's makro](https://stackoverflow.com/a/12316884/8674521). Makro ini menjana semantik pergerakan yang diperlukan untuk kelas anda.

Dengan melaksanakan semantik pindah, anda boleh menarik diri daripada menyediakan fungsi ahli swap juga.

Atas ialah kandungan terperinci Mengapa Perlaksanaan Alih Lalai Tidak Hadir dalam Draf C 11 Awal?. 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