Rumah > pembangunan bahagian belakang > C++ > Patutkah Semakan `jika (ini != &rhs)` Disertakan dalam Operator Tugasan Alih?

Patutkah Semakan `jika (ini != &rhs)` Disertakan dalam Operator Tugasan Alih?

Patricia Arquette
Lepaskan: 2024-11-29 11:55:11
asal
680 orang telah melayarinya

Should the `if (this != &rhs)` Check Be Included in a Move Assignment Operator?

Pindahkan Operator Tugasan dan jika (ini != &rhs)

Dalam pengendali tugasan kelas, ia adalah amalan biasa untuk menyemak sama ada objek yang diberikan ialah objek yang memanggil untuk mengelakkan kemungkinan ralat. Ini dilakukan menggunakan syarat jika (ini != &rhs).

Walau bagaimanapun, dalam konteks pengendali penugasan pindah, khususnya apabila bahagian sebelah kanan (RHS) ialah rujukan nilai (seperti Kelas&&), terdapat persoalan sama ada cek ini perlu.

Sesetengah berpendapat bahawa cek itu tidak diperlukan kerana rujukan nilai sentiasa merujuk kepada yang unik, objek sementara yang tidak boleh dialiaskan di tempat lain. Dalam kes ini, ini != &rhs sentiasa benar.

Yang lain berpendapat bahawa cek itu masih dinasihatkan sebagai langkah pertahanan, walaupun ia tidak diperlukan secara ketat oleh piawaian. Mereka menegaskan bahawa ia memberikan jaminan tambahan dan menghalang potensi pepijat atau tingkah laku yang tidak ditentukan jika kod pelanggan tersilap memberikan rujukan kendiri.

Konsensus umum nampaknya semakan tidak diperlukan dalam konteks pemindahan tugasan, tetapi ia juga tidak memudaratkan. Jika tugasan pindah dilaksanakan menggunakan simpulan bahasa Salin dan Tukar yang popular, adalah amalan biasa untuk memasukkan cek. Walau bagaimanapun, jika penugasan pindah dilaksanakan tanpa Salin dan Tukar, cek itu boleh ditinggalkan.

Akhirnya, keputusan sama ada untuk memasukkan cek itu atau tidak adalah soal keutamaan peribadi dan pertimbangan reka bentuk.

Atas ialah kandungan terperinci Patutkah Semakan `jika (ini != &rhs)` Disertakan dalam Operator Tugasan Alih?. 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