栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690916.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号