C++多线程临时对象创建

C++多线程临时对象创建,第1张

C++多线程临时对象创建
#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
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5691402.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存