Penjelasan terperinci tentang parameter fungsi C++: perbezaan antara salinan parameter rujukan yang gelap dan cetek

PHPz
Lepaskan: 2024-04-26 18:45:02
asal
834 orang telah melayarinya

Dalam C++, parameter yang dihantar kepada fungsi boleh dibahagikan kepada hantaran nilai dan hantaran rujukan. Terdapat dua jenis parameter rujukan: rujukan salinan cetek dan rujukan salinan dalam. Rujukan salinan cetek menghantar rujukan itu sendiri kepada fungsi, membenarkan fungsi mengubah suai objek asal. Rujukan salinan mendalam menghantar salinan objek yang dirujuk oleh parameter rujukan Pengubahsuaian kepada salinan oleh fungsi tidak akan menjejaskan objek asal. Gunakan rujukan salinan cetek apabila fungsi perlu mengubah suai objek, dan juga gunakan rujukan salinan cetek apabila mengelakkan salinan yang tidak perlu. Rujukan salinan dalam digunakan apabila fungsi tidak boleh mengubah suai objek atau apabila objek tidak boleh diubah.

C++ 函数参数详解:引用参数的深浅拷贝差异

Penjelasan terperinci tentang parameter fungsi C++: perbezaan antara salinan gelap dan cetek parameter rujukan

Dalam C++, terdapat dua jenis parameter utama yang dihantar ke fungsi: lulus mengikut nilai dan lulus melalui rujukan. Parameter rujukan berfungsi dengan menghantar rujukan kepada objek atau pembolehubah, bukannya salinannya, berbeza dengan lulus mengikut nilai.

Jenis parameter rujukan

Terdapat dua jenis parameter rujukan:

  • Rujukan salinan cetek: Parameter rujukan itu sendiri dihantar ke fungsi, bukan objek yang dirujuk. Ia membenarkan fungsi untuk mengubah suai objek asal.
  • Rujukan salinan mendalam: Apa yang diluluskan ialah salinan objek yang dirujuk oleh parameter rujukan Pengubahsuaian kepada salinan oleh fungsi tidak akan menjejaskan objek asal.

Contoh Kod

Imej berikut menunjukkan perbezaan antara dua jenis parameter rujukan:

// 浅拷贝引用
void shallow_copy(int& a) {
  a++;
}

// 深拷贝引用
void deep_copy(const int& a) {
  int b = a;
  b++;
}

int main() {
  int x = 5;

  // 浅拷贝引用示例
  shallow_copy(x); // 改变 x 的值
  cout << "x after shallow copy: " << x << endl;  // 输出 6

  // 深拷贝引用示例
  deep_copy(x); // 不改变 x 的值
  cout << "x after deep copy: " << x << endl;  // 输出 5
  
  return 0;
}
Salin selepas log masuk

Senario penggunaan

Rujukan salinan cetek berguna dalam situasi berikut:

  • apabila fungsi yang diluluskan perlu diubah suai atau pembolehubah.
  • Apabila objek atau pembolehubah masuk besar, elakkan penyalinan yang tidak perlu.

Rujukan salinan dalam berguna dalam situasi berikut:

  • Apabila fungsi tidak seharusnya mengubah suai objek atau pembolehubah yang dilalui.
  • Apabila objek atau pembolehubah masuk tidak boleh berubah.

Atas ialah kandungan terperinci Penjelasan terperinci tentang parameter fungsi C++: perbezaan antara salinan parameter rujukan yang gelap dan cetek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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