Rumah > pembangunan bahagian belakang > C++ > Mengapa Pengendali Tugasan C Salin Lazimnya Mengembalikan Rujukan Daripada Nilai?

Mengapa Pengendali Tugasan C Salin Lazimnya Mengembalikan Rujukan Daripada Nilai?

Patricia Arquette
Lepaskan: 2024-12-08 15:19:14
asal
944 orang telah melayarinya

Why Do C   Copy Assignment Operators Typically Return a Reference Instead of a Value?

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:

  1. Invokasi Pembina: Objek baharu dibina berdasarkan nilai yang diberikan.
  2. Tugasan Pembolehubah: Objek baharu diberikan kepada pembolehubah sasaran.
  3. Pemusnah Invocation: Setelah tugasan selesai, objek sementara yang dibuat dalam langkah 1 dimusnahkan.

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
Salin selepas log masuk

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!

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