Rumah > pembangunan bahagian belakang > C++ > Mengapa Pengendali Tugasan Salin C Mengembalikan Rujukan (atau Rujukan Const)?

Mengapa Pengendali Tugasan Salin C Mengembalikan Rujukan (atau Rujukan Const)?

DDD
Lepaskan: 2024-12-13 22:25:16
asal
820 orang telah melayarinya

Why Do C   Copy Assignment Operators Return a Reference (or Const Reference)?

Mengapa Memulangkan Rujukan/Rujukan Const Diperlukan untuk Operator Tugasan Salin?

Dalam C , pengendali tugasan salinan biasanya mengembalikan rujukan atau rujukan const kepada dirinya sendiri. Pilihan reka bentuk ini berpunca daripada pertimbangan prestasi dan mengelakkan penyalinan yang tidak perlu.

Pertimbangkan contoh berikut:

A a1(param);
A a2 = a1;
A a3;

a3 = a2;
Salin selepas log masuk

Andaikan operator penugasan salinan= mengembalikan salinan objek baharu. Dalam kes ini, setiap operasi tugasan akan mencetuskan penciptaan salinan sementara dan pemusnahan seterusnya salinan itu selepas tugasan.

A a3 = a2; // Creates a temporary copy of a2
Salin selepas log masuk

Walau bagaimanapun, dengan mengembalikan rujukan atau rujukan const, operasi tugasan menjadi jauh lebih cekap. Data disalin terus dari satu objek ke objek lain, tanpa perlu mencipta dan memusnahkan salinan sementara.

A& operator=(const A& a) { /* ... */ }
a3 = a2; // Copies data directly from a2 without creating a temporary copy
Salin selepas log masuk

Memulangkan rujukan atau rujukan const juga memastikan pengendali boleh dirantai. Dalam contoh di atas, pernyataan a = b = c akan berfungsi dengan betul kerana pengendali tugasan mengembalikan rujukan kepada objek panggilan.

Sebaliknya, jika operator mengembalikan salinan, rantaian tidak akan dapat dilakukan. Pernyataan a = b = c akan menghasilkan ralat penyusunan kerana penugasan c kepada a memerlukan salinan, manakala tugasan b kepada a sudah mencipta salinan.

Oleh itu, mengembalikan rujukan atau const rujukan daripada operator tugasan salinan adalah penting untuk prestasi dan rantaian yang betul bagi berbilang tugasan.

Atas ialah kandungan terperinci Mengapa Pengendali Tugasan Salin C Mengembalikan Rujukan (atau Rujukan Const)?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan