Saya ingin menyegarkan ingatan saya pada kondisi di mana kompiler biasanya otomatis menghasilkan konstruktor default, menyalin konstruktor dan operator penugasan.
Saya ingat ada beberapa aturan, tetapi saya tidak ingat, dan juga tidak dapat menemukan sumber daya online yang memiliki reputasi baik. Adakah yang bisa membantu?
c++
copy-constructor
default-constructor
move-constructor
move-assignment-operator
oompahloompah
sumber
sumber
const
anggota di kelas akan mencegah konstruktor dari yang dihasilkan secara otomatis ...Saya menemukan diagram di bawah ini sangat bermanfaat.
dari Sticky Bits - Menjadi Aturan Nol Pahlawan
sumber
= delete
(jelas) atau= default
(kurang jelas bagi saya). Apakah saya benar?C ++ 17 N4659 konsep standar
Untuk referensi standar lintas cepat, lihat bagian "Dideklarasikan secara implisit" dari entri preferensi cppreferensi berikut:
Informasi yang sama tentu saja dapat diperoleh dari standar. Misalnya pada C ++ 17 N4659 draft standar :
15.8.1 "Salin / pindahkan konstruktor" kata untuk konstruktor salin:
dan untuk move constructor:
15.8.2 "Operator salin / pindahkan tugas" mengatakan untuk tugas salin:
dan untuk pemindahan tugas:
15.4 "Destructors" mengatakannya untuk destructor:
sumber