#include#include using namespace std; //void myPrint(const int &i, char *buf) //void myPrint(const int i, const string &buf) //{ // cout << i << endl; // // //分析认为,i并不是marv的引用,实际是值传递。可以认为,即使主线程detach了子线程, // //子线程用了i值,仍然是安全的 // //指针是有问题的,不推荐引用和指针 // cout << buf.c_str() << endl; // // return; //} //主线程使用类建立对象,执行顺序测试 class A { public: int m_i; //类型转换构造函数,可以把int整型转换成类A对象 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)拷贝构造函数执行!地址是:" < 1.如果传递int这种简单类型,推荐使用值传递,不要用引用
2.如果传递类对象,避免使用隐式类型转换,全部都是创建线程这一行就创建出临时对象,(这样会调用构造函数两次)然后在函数参数里,用引用来接,否则还会创建出一个对象(不用引用,会调用构造函数三次,造成浪费)
3.终极结论:建议不使用detach
}



