Dalam C++, penunjuk fungsi boleh ditukar kepada objek fungsi melalui templat fungsi std::: Gunakan fungsi std:: untuk membalut penunjuk fungsi menjadi objek fungsi. Gunakan std::function::fungsi ahli sasaran untuk menukar objek fungsi kepada penunjuk fungsi. Transformasi ini berguna dalam senario seperti pengendalian acara, panggilan balik fungsi dan algoritma generik, memberikan lebih fleksibiliti dan kebolehgunaan semula kod.
Dalam C++, penunjuk fungsi dan objek fungsi ialah dua konsep berkait rapat yang membolehkan kita bekerja dengan fungsi dengan cara yang lebih fleksibel. Dalam sesetengah kes, anda mungkin mahu menukar penunjuk fungsi kepada objek fungsi, atau sebaliknya.
Anda boleh menukar penuding fungsi kepada objek fungsi dengan menggunakan templat std::function
. std::function
menerima sebarang entiti boleh panggil (termasuk penunjuk fungsi) dan membungkusnya dalam objek boleh panggil. std::function
模板来将函数指针转换为函数对象。std::function
接受任何可调用的实体(包括函数指针)并将其包装在一个可以调用的对象中。
// 函数指针 int add(int a, int b) { return a + b; } // 转换为函数对象 std::function<int(int, int)> add_fn = add; // 调用函数对象 int result = add_fn(10, 20); // 结果为 30
要将函数对象转换为函数指针,可以使用 std::function::target
成员函数。此函数返回一个指向函数对象底层函数的函数指针。
std::function<int(int, int)> add_fn = [](int a, int b) { return a + b; }; // 转换为函数指针 int (*add_ptr)(int, int) = add_fn.target<int (*)(int, int)>(); // 调用函数指针 int result = add_ptr(10, 20); // 结果为 30
在以下场景中,您可能会发现将函数指针转换为函数对象或 vice versa 很有用:
std::function
rrreeeUntuk menukar objek fungsi kepada penunjuk fungsi, anda boleh menggunakan fungsi ahli std::function::target
. Fungsi ini mengembalikan penunjuk fungsi kepada fungsi asas objek fungsi.
std::function
boleh digunakan untuk menghantar mana-mana entiti boleh panggil kepada algoritma generik, memberikan fleksibiliti. 🎜🎜🎜Dengan memahami penukaran antara penunjuk fungsi dan objek fungsi, anda boleh menulis kod yang lebih fleksibel dan boleh digunakan semula. 🎜Atas ialah kandungan terperinci Bagaimana untuk menukar penunjuk fungsi kepada objek fungsi dan sebaliknya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!