1. 用类(可调用对象)
必须要重载括号运算符,否则不是可调用对象。这种方式其实就是一个仿函数。
示例:
#include <iostream>
#include <thread>
using namespace std;
class TA
{
public:
void operator() ()// 不能带参数
{
cout << "子线程operator()开始" << std::endl;
cout << "子线程operator()结束" << std::endl;
}
};
int main()
{
TA ta;
thread mytobj3(ta);// ta:可调用对象
mytobj3.join();
cout << "main over" << std::endl;
return 0;
}
这里有一些注意的要点,看下面这个程序:
#include <iostream>
#include <thread>
using namespace std;
class TA
{
public:
int& m_i;
TA(int& i) :m_i(i) {}; // 构造函数
void operator() () // 不能带参数
{