Rumah >pembangunan bahagian belakang >C++ >Apakah konvensyen panggilan fungsi C++?

Apakah konvensyen panggilan fungsi C++?

WBOY
WBOYasal
2024-04-12 10:15:01644semak imbas

Terdapat empat konvensyen panggilan fungsi dalam C++: pass by value, pass by pointer, pass by reference dan pass by RVO. Melepasi nilai menghantar salinan parameter, melepasi penunjuk melepasi alamat parameter, melepasi rujukan melepasi rujukan parameter, dan melepasi RVO menggerakkan kandungan objek secara langsung dalam keadaan tertentu.

C++ 函数调用约定有哪些?

Konvensyen Panggilan Fungsi C++

Konvensyen panggilan fungsi menentukan cara parameter dihantar semasa panggilan fungsi dan cara keputusan dikembalikan apabila panggilan kembali. Terdapat empat konvensyen panggilan fungsi utama dalam C++:

1 Pass-by-value

  • Salinan parameter dihantar ke fungsi.
  • Fungsi beroperasi pada salinan dan tidak menjejaskan nilai asal.
  • Cekap untuk jenis asas (int, float, dll.).

2. Pass-by-pointer

  • Alamat parameter dihantar ke fungsi.
  • Fungsi boleh menunjuk dan mengubah suai nilai asal melalui penunjuk.
  • Membenarkan fungsi mengembalikan bilangan argumen yang berubah-ubah.

3. Rujukan lewat

  • Rujukan (alias) parameter dihantar ke fungsi.
  • Fungsi boleh menunjuk dan mengubah suai nilai asal melalui rujukan.
  • Lebih cekap daripada melepasi penunjuk (mengelakkan penuding dinyahrujuk).

4. Melepasi RVO (pengoptimuman nilai pulangan, pengoptimuman nilai pulangan)

  • Apabila fungsi mengembalikan objek bukan rujukan dan objek itu belum dirujuk oleh mana-mana objek lain, pengkompil akan melaksanakan RVO.
  • Dalam RVO, fungsi mengalihkan kandungan objek terus ke dalam konteks pemanggil, bukannya mencipta dan memulangkan salinan sementara.

Kes praktikal

// 通过值传递整数
void func_by_val(int val) {
  val++;  // 不会影响原始值
}

// 通过指针传递整数
void func_by_ptr(int *val) {
  (*val)++;  // 会影响原始值
}

// 通过引用传递整数
void func_by_ref(int &val) {
  val++;  // 会影响原始值
}

int main() {
  int a = 5;

  func_by_val(a);
  std::cout << a << std::endl;  // 输出 5

  func_by_ptr(&a);
  std::cout << a << std::endl;  // 输出 6

  func_by_ref(a);
  std::cout << a << std::endl;  // 输出 7
}

Atas ialah kandungan terperinci Apakah konvensyen panggilan fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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