Rumah >pembangunan bahagian belakang >C++ >const qualifier untuk parameter penunjuk fungsi C++

const qualifier untuk parameter penunjuk fungsi C++

WBOY
WBOYasal
2024-04-20 18:36:01817semak imbas

C++ 函数指针参数的 const 限定符

const qualifier untuk parameter penuding fungsi C++

Penuding fungsi ialah penuding kepada fungsi, yang menyediakan keupayaan untuk memanggil fungsi secara dinamik pada masa jalan. Parameter penunjuk fungsi sering digunakan untuk menghantar panggilan balik ke fungsi lain.

Kelayakan const boleh digunakan pada parameter penuding fungsi untuk menentukan bahawa fungsi yang ditunjuk oleh penuding fungsi tidak boleh diubah suai. Ini memastikan bahawa fungsi yang ditunjuk oleh penuding fungsi tidak ditimpa atau diubah suai secara tidak sengaja semasa panggilan. const 限定符可以应用于函数指针参数,以指定函数指针指向的函数不能被修改。这确保了函数指针指向的函数在调用期间不会被意外覆盖或修改。

语法

void foo(void (*func)(int));

在上面的示例中,foo 函数接受一个函数指针参数 func,该函数指针指向一个接受单个整型参数的函数。const 限定符指定指向的函数不能被修改。

实战案例

考虑一个计算两个整数最大公约数的函数:

int gcd(int a, int b) {
    while (b) {
        int temp = a % b;
        a = b;
        b = temp;
    }
    return a;
}

我们可以通过将 gcd 函数作为一个函数指针参数传递来创建一个函数,该函数返回两个数字的最小公倍数:

int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

main 函数中,我们可以使用 std::function 包装器类来创建指向 gcd 函数的 const 函数指针:

int main() {
    std::function<int(int, int)> gcd_ptr = std::function<int(int, int)>(gcd);
    int result = lcm(12, 18);
    std::cout << result << std::endl;
    return 0;
}

输出:

36

在此示例中,gcd_ptr 是指向 gcd 函数的 const 函数指针,因为它使用 std::function

Syntax

rrreeeDalam contoh di atas, fungsi foo menerima parameter penuding fungsi func, yang menunjuk kepada fungsi yang menerima integer tunggal parameter Fungsi. Kelayakan const menentukan bahawa fungsi yang ditunjuk tidak boleh diubah suai. 🎜

Kes Praktikal

🎜Pertimbangkan fungsi yang mengira pembahagi sepunya terbesar bagi dua integer: 🎜rrreee🎜Kita boleh mencipta fungsi dengan menghantar fungsi gcd sebagai hujah penunjuk fungsi, Fungsi ini mengembalikan gandaan sepunya terendah bagi dua nombor: 🎜rrreee🎜Dalam fungsi main, kita boleh menggunakan kelas pembalut std::function untuk mencipta penunjuk kepada gcd fungsi <code>const penunjuk fungsi: 🎜rrreee🎜Output: 🎜rrreee🎜Dalam contoh ini, gcd_ptr ialah penunjuk kepada gcd fungsi kod>const penunjuk fungsi, kerana ia dicipta menggunakan kelas pembalut std::function, yang memastikan bahawa fungsi runcing tidak boleh diubah suai. 🎜

Atas ialah kandungan terperinci const qualifier untuk parameter penunjuk 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