这段代码是一个构造函数的定义,用于初始化一个类的对象。构造函数的名称与类的名称相同,并且在创建对象时自动调用。在这个例子中,构造函数的名称是A,它有两个参数a和b,分别用于初始化类的成员变量m_iA和m_iB。
构造函数的定义使用了初始化列表(initialization list),通过冒号(:)后面跟着成员变量的初始化方式来初始化成员变量。在这个例子中,m_iA和m_iB是类A的成员变量,通过初始化列表分别用参数a和b来初始化。
这种方式可以在对象创建时直接对成员变量进行初始化,而不需要在构造函数的函数体中再进行赋值操作。这样可以提高代码的效率,并且可以确保成员变量在对象创建时就被正确初始化。
#include <iostream>
#include <thread>
using namespace std;
class A {
public:
A(int a,int b) : m_iA(a), m_iB(b) {}
void operator()(int a,int b) const{
cout << a + b << endl;
cout << m_iA + m_iB << endl;
cout << "this is A thread" << endl;
}
private:
int m_iA;
int m_iB;
};
int main()
{
// 下列输出均为5 3
thread t1{ A{1,2} ,2, 3};
t1.join();
A a(1, 2);
thread t2(a, 2, 3);
t2.join();
thread t3 = thread(A(1, 2), 2, 3);
t3.join();
cout << "this is main thread" << endl;
return 0;
}