Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang parameter fungsi C++: idea lulus parameter dalam pengaturcaraan berfungsi

Penjelasan terperinci tentang parameter fungsi C++: idea lulus parameter dalam pengaturcaraan berfungsi

PHPz
PHPzasal
2024-04-28 11:27:02398semak imbas

Terdapat lima cara untuk menghantar parameter dalam fungsi C++: lulus rujukan, lulus nilai, penukaran jenis tersirat, parameter const dan parameter lalai. Lulus melalui rujukan meningkatkan kecekapan dan lulus mengikut nilai adalah lebih selamat penukaran jenis tersirat menukar jenis lain kepada jenis yang dijangkakan oleh fungsi parameter const tidak sengaja membenarkan parameter untuk ditinggalkan; Dalam pengaturcaraan berfungsi, parameter fungsi boleh digunakan untuk menghantar data dan melaksanakan operasi.

C++ 函数参数详解:函数式编程中参数传递的思想

Penjelasan terperinci tentang parameter fungsi C++: Idea lulus parameter dalam pengaturcaraan berfungsi

Dalam C++, parameter ialah data yang dihantar kepada fungsi. Cara parameter diluluskan mempunyai kesan penting pada gaya, prestasi dan kebolehbacaan kod.

Lulus dengan rujukan

Lulus dengan rujukan ialah penunjuk kepada pembolehubah. Apabila fungsi melepasi parameter melalui rujukan, sebarang perubahan yang dilakukan oleh fungsi kepada parameter ditunjukkan dalam pembolehubah asal. Melewati rujukan meningkatkan kecekapan kerana ia tidak memerlukan penyalinan data semasa memanggil fungsi.

void increment(int& value) {
  value++;
}

int main() {
  int x = 5;
  increment(x);  // 引用传递
  cout << x;  // 输出 6
}

Pass by value

Pass by value menghantar salinan hujah kepada fungsi. Sebarang perubahan yang dibuat oleh fungsi pada salinan ini tidak akan menjejaskan pembolehubah asal. Melewati nilai adalah lebih selamat kerana ia menghalang pengubahsuaian yang tidak disengajakan.

void increment(int value) {
  value++;
}

int main() {
  int x = 5;
  increment(x);  // 值传递
  cout << x;  // 输出 5(不变)
}

Penukaran jenis tersirat

Apabila parameter diluluskan mengikut nilai, C++ secara automatik melakukan penukaran jenis tersirat. Sebagai contoh, jika fungsi menjangka parameter int tetapi diluluskan char, C++ menukar char kepada int.

void print(int value) {
  cout << value;
}

int main() {
  char c = 'a';
  print(c);  // 隐式转换,输出 97('a' 的 ASCII 码)
}

parameter const

parameter const tidak boleh diubah suai oleh fungsi. Parameter Const membantu menjadikan kod anda lebih selamat kerana ia menghalang pengubahsuaian yang tidak disengajakan.

void print(const int& value) {
  // value 不能被修改
}

int main() {
  const int x = 5;
  print(x);
}

Parameter lalai

Parameter lalai membenarkan parameter tertentu ditinggalkan semasa memanggil fungsi. Parameter lalai mesti diletakkan di hujung senarai parameter fungsi.

void print(int value, const string& name = "Unknown") {
  cout << "Name: " << name << ", Value: " << value;
}

int main() {
  print(5);  // 使用默认参数
  print(10, "John");  // 指定参数
}

Kes praktikal

Dalam contoh kod pengaturcaraan berfungsi berikut, kita boleh menggunakan parameter fungsi untuk menghantar data dan melaksanakan operasi:

#include <iostream>
#include <functional>

using namespace std;

// 接收一个整数并返回其平方的 lambda 函数
auto square = [](int x) { return x * x; };

int main() {
  // 将 lambda 函数传递给 for_each 函数
  vector<int> numbers = {1, 2, 3};
  for_each(begin(numbers), end(numbers), square);

  // 打印平方的值
  for (auto num : numbers) {
    cout << num << " ";
  }

  return 0;
}

Dalam contoh kod ini, fungsi lambdasquare 作为一个参数传递给 for_each digunakan untuk melaksanakan operasi pada setiap item dalam bekas. Lakukan operasi kuasa dua pada elemen.

Atas ialah kandungan terperinci Penjelasan terperinci tentang parameter fungsi C++: idea lulus parameter dalam pengaturcaraan berfungsi. 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