#include<iostream>
#include<thread>
using namespace std;
class A {
public:
int m_i;
A(int a) :m_i(a) { cout << "A::A(int a)构造函数执行!, 地址是:" << this << endl; }
A(const A &a) :m_i(a.m_i) { cout << "A::A(const A)拷贝构造函数执行!地址是:" <<this << endl; }
~A(){ cout << "A::~A()析构函数执行!" << endl; }
};
void myPrint2(const int i, const A &buf)
{
cout << "引用的对象地址是"<< &buf << endl;
return;
}
int main()
{
int marv = 1;
int mySecondPar = 10;
thread thread2(myPrint2, marv, A(mySecondPar));
thread2.detach();
cout << "main thread" << endl;
return 0;
1.如果传递int这种简单类型,推荐使用值传递,不要用引用 2.如果传递类对象,避免使用隐式类型转换,全部都是创建线程这一行就创建出临时对象,(这样会调用构造函数两次)然后在函数参数里,用引用来接,否则还会创建出一个对象(不用引用,会调用构造函数三次,造成浪费) 3.终极结论:建议不使用detach }
|