Operator Tugasan Salin: Rujukan Memulangkan lwn Nilai
Dalam C , pengendali tugasan salin biasanya tidak mengembalikan salinan objek baharu tetapi sebaliknya kembalikan rujukan atau rujukan const. Mengapakah ini pendekatan yang diutamakan?
Rasional untuk Memulangkan Melalui Rujukan
Pertama, mengembalikan melalui rujukan meminimumkan overhed pengiraan yang dikaitkan dengan tugasan. Ia melibatkan hanya menyalin nilai dari satu objek ke objek lain, mengelakkan penciptaan dan pemusnahan objek sementara. Ini amat berfaedah apabila berurusan dengan objek yang kompleks atau besar yang membina dan memadam salinan boleh menjadi intensif sumber.
Akibat Pengembalian Mengikut Nilai
Sebaliknya, jika pengendali tugasan salinan kembali mengikut nilai, ia mencetuskan urutan berikut untuk setiap satu tugasan:
Jujukan ini berulang untuk setiap tugasan dalam rantai, mengakibatkan panggilan pembina dan pemusnah yang berlebihan. Pertimbangkan senario berikut:
A a1(param); A a2 = a1; A a3; a3 = a2; // Line in question
Jika operator= mengembalikan mengikut nilai, ia memerlukan dua panggilan pembina dan pemusnah untuk tugasan kepada a2 dan a3, manakala pengembalian melalui rujukan mengelakkan overhed ini.
Pertimbangan Tambahan
Memulangkan dengan rujukan juga membenarkan pengendali tugasan mengembalikan nilai, membolehkan pengubahsuaian selanjutnya bagi objek yang diberikan. Sebaliknya, pengembalian mengikut nilai menghasilkan nilai r, yang tidak boleh diubah suai secara langsung.
Kesimpulan
Manakala pemulangan melalui rujukan adalah amalan standard untuk pengendali tugasan salinan dalam C , adalah penting untuk menimbang konteks dan keperluan khusus apabila memutuskan jenis pulangan yang sesuai. Walau bagaimanapun, bagi kebanyakan senario yang melibatkan kecekapan dan pengurusan objek, mengembalikan rujukan kekal sebagai pilihan pilihan.
Atas ialah kandungan terperinci Mengapa Pengendali Tugasan C Salin Lazimnya Mengembalikan Rujukan Daripada Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!