함수 포인터는 다음을 포함하여 C++의 프로그래밍 문제를 해결하는 강력한 방법을 제공합니다. 비교 함수: 함수 포인터를 사용하여 객체 정렬을 용이하게 하는 사용자 정의 비교기를 구현합니다. 이벤트 처리: 이벤트를 트리거하는 함수 포인터를 등록하여 이벤트 처리 시스템을 만듭니다. 콜백 함수: 제어권을 다른 함수로 넘겼다가 적절한 시점에 제어권을 복원하여 콜백 함수를 구현합니다.
C++ 함수 포인터 연습: 일반적인 프로그래밍 문제 해결
함수 포인터는 C++의 강력한 기능으로, 함수를 매개변수로 전달하거나 저장할 수 있습니다. 함수 포인터의 기본 개념과 실제 적용을 이해하면 다양한 프로그래밍 문제를 효과적으로 해결할 수 있습니다.
기본 개념
함수 포인터는 함수에 대한 포인터입니다. 해당 유형은 반환 값과 매개변수 유형이 포인터 선언에 지정된 함수에 대한 포인터입니다. 예:
typedef int (*FuncPtr)(int, int);
이것은 반환 유형이 int이고 매개변수가 int 및 int인 함수에 대한 포인터를 선언합니다.
실용 사례
함수 포인터를 사용하여 두 개체를 비교할 수 있습니다. 다음 코드는 함수 포인터를 사용하여 사용자 정의 비교기를 구현하는 방법을 보여줍니다.
#include <algorithm> struct Person { std::string name; int age; }; // 比较器函数 bool compare_by_name(const Person& lhs, const Person& rhs) { return lhs.name < rhs.name; } bool compare_by_age(const Person& lhs, const Person& rhs) { return lhs.age < rhs.age; } int main() { std::vector<Person> people = {{"Alice", 30}, {"Bob", 25}, {"Carol", 32}}; // 使用函数指针对人进行排序 std::sort(people.begin(), people.end(), compare_by_name); for (auto& person : people) { std::cout << person.name << std::endl; } std::cout << std::endl; // 使用不同的函数指针对人进行排序 std::sort(people.begin(), people.end(), compare_by_age); for (auto& person : people) { std::cout << person.name << std::endl; } return 0; }
출력:
Alice Bob Carol Bob Alice Carol
함수 포인터는 이벤트 처리 시스템을 만드는 데 사용할 수 있습니다. 다음 예에서는 함수 포인터를 사용하여 이벤트를 등록하고 트리거하는 방법을 보여줍니다.
#include <map> #include <functional> class EventManager { public: // 注册事件 template<typename Function> void Register(const std::string& event, Function callback) { callbacks[event].push_back(callback); } // 触发事件 void Trigger(const std::string& event) { for (auto& callback : callbacks[event]) { callback(); } } private: std::map<std::string, std::vector<std::function<void()>>> callbacks; }; int main() { EventManager manager; // 注册按钮点击事件 manager.Register("button_click", []() { std::cout << "Button clicked!" << std::endl; }); // 模拟按钮点击 manager.Trigger("button_click"); return 0; }
출력:
Button clicked!
함수 포인터를 사용하여 콜백 함수를 구현하여 하나의 함수가 제어권을 넘겨줄 수 있습니다. 또 다른 기능을 수행하고 때가 되면 제어권을 다시 얻습니다. 다음 예에서는 함수 포인터를 사용하여 콜백 함수를 생성하는 방법을 보여줍니다.
#include <thread> void Callback(int num) { std::cout << "Callback function called with argument: " << num << std::endl; } int main() { std::thread thread(Callback, 10); thread.join(); return 0; }
Output:
Callback function called with argument: 10
위 내용은 C++ 함수 포인터 작동: 일반적인 프로그래밍 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!