上一篇(C++并发与多线程(4) | 传递临时对象作为线程参数的一些问题Ⅰ-CSDN博客)提出了传递临时对象作为线程参数的问题,本节借助一个线程ID的概念来更好地理解。

一、线程ID

概念:

    ID是每个线程(不管是子线程还是主线程)对应的一个数字,每个线程的ID都不同。

获取线程ID的方法:

std::this_thread::get_id()

二、临时对象时机捕获

 找出临时对象是在哪里构造的,是在主线程中还是子线程中?

修改之前的代码,加入部分打印线程ID的代码语句:

#include<iostream>
#include<thread>

using namespace std;

class A
{
public:
	int m_i;

	//类型转换构造函数,可以把一个int转换成一个类A对象
	A(int a) :m_i(a) {
		cout << "[A::A(int a)构造函数执行]" << this << "thread_id = " << std::this_thread::get_id() << endl;
	}


	
10-23 20:08