Rumah > pembangunan bahagian belakang > C++ > C Lulus Objek: Mengikut Nilai atau Rujukan?

C Lulus Objek: Mengikut Nilai atau Rujukan?

Mary-Kate Olsen
Lepaskan: 2024-11-28 00:46:10
asal
377 orang telah melayarinya

C   Object Passing: By Value or Reference?

Memahami Hantaran Objek dalam C : Mengikut Nilai atau Rujukan?

Dalam C , apabila fungsi dipanggil dengan hujah, persoalan timbul sama ada hujah diluluskan dengan nilai atau rujukan. Ini amat relevan apabila berurusan dengan objek.

Hujah Melepasi dalam C

Secara lalai, hujah dihantar melalui nilai dalam C , bermakna salinan hujah yang diluluskan dicipta dan dihantar ke fungsi. Walau bagaimanapun, tingkah laku ini boleh ditindih menggunakan pengendali rujukan (&) dalam tandatangan fungsi.

Melalui Objek dalam C

Dalam kes objek, situasinya adalah sedikit lebih kompleks. Apabila objek dihantar ke fungsi sebagai hujah, secara lalai, hanya rujukan (atau penunjuk) kepada objek diluluskan, bukan salinan objek itu sendiri. Ini kerana mencipta salinan objek boleh menjadi operasi yang memakan masa dan intensif ingatan.

Akibat Melewati Objek melalui Rujukan

Melalui objek melalui rujukan telah beberapa akibat penting:

  • Perubahan pada objek dalam fungsi mempengaruhi objek asal: Sebarang pengubahsuaian yang dibuat pada objek dalam fungsi akan dicerminkan dalam objek asal.
  • Melalui objek besar boleh menjadi cekap: Menyalin objek besar boleh menjadi perlahan dan sumber -intensif. Melewati rujukan mengelakkan overhed ini.
  • Aliasing boleh berlaku: Memandangkan rujukan diluluskan, ada kemungkinan berbilang pembolehubah atau argumen fungsi boleh merujuk kepada objek yang sama, yang membawa kepada kemungkinan ralat jika tidak dikendalikan berhati-hati.

Contoh:

Pertimbangkan coretan kod berikut:

class Point {
public:
    int x, y;
};

void myFunction(Point& point) {
    point.x = 10;
    point.y = 20;
}

int main() {
    Point point;
    myFunction(point);

    // The original point object will now have its x and y coordinates set to 10 and 20, respectively.
}
Salin selepas log masuk

Dalam contoh ini, titik objek dilalui oleh merujuk kepada fungsi myFunction. Sebarang perubahan yang dibuat pada titik dalam myFunction akan menjejaskan objek titik asal secara langsung.

Kesimpulan

Ringkasnya, C menghantar objek secara rujukan secara lalai. Ini membolehkan penggunaan memori yang cekap, terutamanya untuk objek besar. Walau bagaimanapun, ia juga memperkenalkan potensi untuk alias dan memerlukan pengendalian rujukan objek yang teliti untuk mengelakkan kesan sampingan yang tidak diingini.

Atas ialah kandungan terperinci C Lulus Objek: Mengikut Nilai atau Rujukan?. 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