> 백엔드 개발 > C++ > 본문

C++ 함수 포인터와 함수 개체: 코드의 숨겨진 잠재력 잠금 해제

王林
풀어 주다: 2024-04-29 10:33:01
원래의
729명이 탐색했습니다.

C++ 함수 포인터는 함수를 가리키므로 포인터를 통해 함수를 호출할 수 있습니다. 함수 객체는 Operator() 연산자를 오버로드하고 함수처럼 호출할 수 있는 클래스 또는 구조체입니다. 이는 다른 함수에 인수로 전달되는 함수인 콜백 함수로 작업할 때 유용합니다.

C++ 函数指针与函数对象:解锁代码的隐藏潜力

C++ 함수 포인터 및 함수 개체: 코드의 숨겨진 잠재력 잠금 해제

소개

C++에서 함수 포인터 및 함수 개체는 코드에서 함수를 표현하고 조작하기 위한 강력한 도구입니다. 이러한 개념을 이해하는 것은 코드의 유연성과 유지 관리성을 크게 향상시킬 수 있으므로 중요합니다.

함수 포인터

함수 포인터는 함수에 대한 포인터입니다. 함수의 주소를 저장하고 포인터를 통해 함수를 호출할 수 있습니다. 구문은 다음과 같습니다.

return_type (*function_pointer)(parameter1, parameter2, ...);
로그인 후 복사

예:

다음 함수는 두 숫자의 합을 계산합니다.

int add(int a, int b) {
  return a + b;
}
로그인 후 복사

다음 함수 포인터를 사용하여 이 함수를 가리킬 수 있습니다.

int (*add_ptr)(int, int) = add;
로그인 후 복사

이제 함수 포인터를 통해 추가 함수: add 函数:

int result = add_ptr(10, 20); // 等价于 add(10, 20)
로그인 후 복사

函数对象

函数对象是一种类或结构,重载了 operator()

struct FunctionObject {
  return_type operator()(parameter1, parameter2, ...);
};
로그인 후 복사

Function object

함수 개체는 operator() 연산자를 오버로드하여 다음과 같이 호출할 수 있도록 하는 클래스 또는 구조체입니다. 기능. 구문은 다음과 같습니다.

struct AddFunctionObject {
  int operator()(int a, int b) {
    return a + b;
  }
};
로그인 후 복사

예:

두 숫자의 합을 계산하는 함수 개체를 만듭니다.

AddFunctionObject add_object;
int result = add_object(10, 20); // 等价于 add(10, 20)
로그인 후 복사

이제 이 개체를 인스턴스화하고 함수처럼 호출할 수 있습니다.

void process_numbers(int* numbers, int size, int (*operation)(int)) {
  for (int i = 0; i < size; i++) {
    numbers[i] = operation(numbers[i]);
  }
}
로그인 후 복사

실용적 예: 콜백 함수

함수 포인터와 함수 개체는 콜백 함수를 사용할 때 매우 유용합니다. 콜백 함수는 다른 함수에 매개변수로 전달되는 함수입니다.

예:

숫자 집합을 다른 함수에 전달하는 함수가 있다고 가정해 보겠습니다. 후자는 각 번호에 대해 작업을 수행합니다. 함수 포인터나 함수 객체를 사용하여 두 번째 함수를 콜백 함수로 전달할 수 있습니다.

함수 포인터 사용:

🎜
void process_numbers(int* numbers, int size, FunctionObject& operation) {
  for (int i = 0; i < size; i++) {
    numbers[i] = operation(numbers[i]);
  }
}
로그인 후 복사
🎜🎜함수 개체 사용: 🎜🎜rrreee

위 내용은 C++ 함수 포인터와 함수 개체: 코드의 숨겨진 잠재력 잠금 해제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!