> 백엔드 개발 > C++ > C++ 함수 포인터 매개변수에 대한 const 한정자

C++ 함수 포인터 매개변수에 대한 const 한정자

WBOY
풀어 주다: 2024-04-20 18:36:01
원래의
825명이 탐색했습니다.

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

C++ 함수 포인터 매개변수에 대한 const 한정자

함수 포인터는 런타임 시 동적으로 함수를 호출하는 기능을 제공하는 함수에 대한 포인터입니다. 함수 포인터 매개변수는 콜백을 다른 함수에 전달하는 데 자주 사용됩니다.

const 한정자는 함수 포인터 매개변수에 적용되어 함수 포인터가 가리키는 함수를 수정할 수 없도록 지정할 수 있습니다. 이렇게 하면 함수 포인터가 가리키는 함수가 호출 중에 실수로 덮어쓰이거나 수정되지 않습니다. 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

구문

rrreee위의 예에서 foo 함수는 단일 정수를 허용하는 함수를 가리키는 함수 포인터 매개변수 func를 허용합니다. 매개변수 함수입니다. const 한정자는 가리키는 함수를 수정할 수 없음을 지정합니다. 🎜

실용 사례

🎜두 정수의 최대 공약수를 계산하는 함수를 생각해 보세요. 🎜rrreee🎜gcd 함수를 함수 포인터 인수로 전달하여 함수를 만들 수 있습니다. 이 함수는 두 숫자의 가장 낮은 공배수를 반환합니다. 🎜rrreee🎜main 함수에서 std::function 래퍼 클래스를 사용하여 gcd 함수의 <code>const 함수 포인터: 🎜rrreee🎜출력: 🎜rrreee🎜이 예에서 gcd_ptrgcd에 대한 포인터입니다. > function code>const 함수 포인터. 이는 가리키는 함수를 수정할 수 없도록 보장하는 std::function 래퍼 클래스를 사용하여 생성되기 때문입니다. 🎜

위 내용은 C++ 함수 포인터 매개변수에 대한 const 한정자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿