面试题答案
一键面试-
基本步骤:
- 包含必要的头文件,即
<iostream>
用于输入输出,<thread>
用于线程操作,<functional>
用于std::function
。 - 定义
MyClass
类,在类中定义callbackFunction
成员函数。 - 在类外定义一个静态成员函数或者自由函数,该函数作为线程执行的入口,在这个函数内部调用类的成员函数
callbackFunction
。这里可以使用std::function
来存储类成员函数指针,以便通过对象实例调用。 - 在
main
函数中创建MyClass
对象实例,然后使用std::thread
来异步调用前面定义的静态成员函数或者自由函数,并传入类对象实例和必要的参数(如果callbackFunction
有参数)。 - 调用
std::thread
的join
方法等待线程执行完毕。
- 包含必要的头文件,即
-
示例代码:
#include <iostream>
#include <thread>
#include <functional>
class MyClass {
public:
void callbackFunction(int num) {
std::cout << "Callback function called with value: " << num << std::endl;
}
};
// 静态成员函数作为线程入口
static void threadEntry(std::function<void(int)> func, int num) {
func(num);
}
int main() {
MyClass obj;
std::function<void(int)> callback = std::bind(&MyClass::callbackFunction, &obj, std::placeholders::_1);
std::thread t(threadEntry, callback, 42);
t.join();
return 0;
}