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;
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
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
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!