일반 함수 포인터는 C++에서 다양한 유형과 매개변수 개수의 함수에 대한 포인터입니다. 일반 함수 포인터를 생성하려면 함수의 반환 값 유형과 매개변수 유형의 튜플을 지정하는 템플릿을 사용해야 합니다. 일반 함수 포인터는 다음 구문과 함께 사용할 수 있습니다: 함수 포인터를 선언하고, 함수 포인터에 함수를 할당하고, 함수 포인터가 가리키는 함수를 호출합니다. 실제 사례에서는 일반 함수 포인터를 사용하여 다양한 유형의 요소를 정렬할 수 있는 정렬 알고리즘의 비교 함수를 구현합니다.
C++ 일반 함수 포인터를 만들고 사용하는 방법
C++에서 함수 포인터는 함수에 대한 포인터입니다. 일반 함수 포인터는 다양한 유형과 매개변수 수의 함수를 가리킬 수 있습니다.
일반 함수 포인터 만들기
일반 함수 포인터를 만들려면 다음 템플릿을 사용할 수 있습니다.
template <typename Ret, typename... Args> using GenericFunctionPointer = Ret (*)(Args...);
여기서:
Ret
는 함수의 반환 값 유형입니다. Ret
是函数的返回值类型。Args
Args
는 함수의 매개변수 유형으로 구성된 튜플입니다. using FuncPtr = std::string (*)(int);일반 함수 포인터 사용 다음 구문을 사용하여 일반 함수 포인터를 사용할 수 있습니다.
FuncPtr funcPtr; // 声明函数指针 // 将函数赋值给函数指针 funcPtr = [](int x) { return std::to_string(x); }; // 调用通过函数指针指向的函数 std::string result = funcPtr(42);실용 사례 다양한 유형(예: 정수 또는 문자열)의 요소를 정렬할 수 있는 정렬 알고리즘을 생각해 보세요. 일반 함수 포인터를 사용하여 두 요소를 비교하고 요소의 크기 관계에 따라 정수를 반환하는 비교 함수를 구현할 수 있습니다.
template <typename T> int compare(const T& a, const T& b) { // 比较两个元素并返回 -1 (a < b)、0 (a == b)或 1 (a > b) // ... } template <typename T> void sort(T* array, int length, GenericFunctionPointer<int, const T&, const T&> compareFunc) { // 使用比较函数对数组进行排序 // ... }이 구현을 사용하면 다음과 같은 정수 배열을 정렬할 수 있습니다:
int arr[] = {3, 1, 4, 2}; sort(arr, 4, compare<int>);또는 문자열 배열: 🎜
std::string arr[] = {"apple", "banana", "cherry"}; sort(arr, 3, compare<std::string>);
위 내용은 C++ 일반 함수 포인터를 만들고 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!