admin 管理员组

文章数量: 1087649


2024年12月27日发(作者:constraint衣服)

c++注册回调函数

C++中注册回调函数可以使用函数指针或Lambda表达式两种形式

来实现。

使用函数指针注册回调函数的步骤如下:

1. 定义回调函数指针类型

```c++

typedef void (*CallbackFunction)(int arg1, int arg2);

```

2. 定义需要注册回调函数的类

```c++

class MyClass {

public:

void RegisterCallback(CallbackFunction callback);

void DoSomething();

private:

CallbackFunction m_callback;

};

```

3. 在类的实现中实现回调函数的注册及调用

```c++

void MyClass::RegisterCallback(CallbackFunction callback) {

m_callback = callback;

}

void MyClass::DoSomething() {

// 在适当的地方调用回调函数

if(m_callback) {

m_callback(1, 2);

}

}

```

使用Lambda表达式注册回调函数的步骤如下:

1. 定义需要注册回调函数的类

```c++

class MyClass {

public:

void RegisterCallback(std::function

callback);

void DoSomething();

private:

std::function m_callback;

};

```

2. 在类的实现中实现回调函数的注册及调用

```c++

void MyClass::RegisterCallback(std::function

callback) {

m_callback = callback;

}

void MyClass::DoSomething() {

// 在适当的地方调用回调函数

if(m_callback) {

m_callback(1, 2);

}

}

```

可以看出,Lambda表达式的形式更为简洁,但需要在编译时生成

闭包等额外代码,对程序的性能会有一定的影响。因此在编写需要高

性能的程序时,建议使用函数指针的形式来注册回调函数。


本文标签: 回调 函数 注册 使用 需要