C++回调函数精解:基础使用和高级技巧一网打尽

 

概述:C++回调函数提供了灵活的编程方式。基础使用演示了如何定义和调用简单的回调,而高级使用则展示了返回值非 `void` 的回调和Lambda表达式的灵活性。这种机制使程序更模块化、可维护。

在C++中,回调函数可以用于实现基础和高级的功能。以下是一个包含基础和高级用法的例子,演示如何定义和使用回调函数。

基础使用:

#include <iostream>
#include <functional>

// 定义回调函数类型
using BasicCallback = std::function<void(int)>;

// 基础回调函数
void basicCallbackFunction(int result) {
    std::cout << "基础回调函数被调用,结果为: " << result << std::endl;
}

// 函数接受基础回调函数作为参数
void performBasicOperation(int data, BasicCallback callback) {
    std::cout << "执行基础操作,数据为: " << data << std::endl;
    
    // 调用基础回调函数
    callback(data);
}

int main() {
    // 使用基础回调函数作为参数调用函数
    performBasicOperation(42, basicCallbackFunction);

    return 0;
}

高级使用:

#include <iostream>
#include <functional>

// 定义高级回调函数类型
using AdvancedCallback = std::function<int(int)>;

// 高级回调函数
int advancedCallbackFunction(int result) {
    std::cout << "高级回调函数被调用,结果为: " << result << std::endl;
    return result * 2;
}

// 函数接受高级回调函数作为参数
void performAdvancedOperation(int data, AdvancedCallback callback) {
    std::cout << "执行高级操作,数据为: " << data << std::endl;
    
    // 调用高级回调函数并获取结果
    int result = callback(data);

    std::cout << "高级操作的结果为: " << result << std::endl;
}

int main() {
    // 使用高级回调函数作为参数调用函数
    performAdvancedOperation(42, advancedCallbackFunction);

    // 使用Lambda表达式作为高级回调函数
    performAdvancedOperation(99, [](int result) {
        std::cout << "Lambda高级回调函数被调用,结果为: " << result << std::endl;
        return result * 3;
    });

    return 0;
}

在这个例子中,基础使用演示了如何定义和使用一个简单的回调函数。而高级使用展示了如何定义返回值非 void 的回调函数,并且使用Lambda表达式作为一种更灵活的回调方式。在高级例子中,回调函数不仅被调用,还返回了一个结果,进一步扩展了回调的灵活性。

 

posted @ 2024-03-18 07:31  架构师老卢  阅读(78)  评论(0编辑  收藏  举报