|
|
1
2
线程从启动它们的代码异步执行。这就是重点。这意味着,当实际调用线程函数时,启动线程的代码很可能已经离开了调用堆栈。如果用户传递了对局部变量的引用,那么在调用线程函数时,该变量可能已脱离堆栈。基本上,通过引用传递线程函数是 非常 危险的
然而,在C++中,通过引用传递变量是微不足道的;您只需为通过引用获取其参数的函数提供名称。由于在这种特殊情况下是如此危险,
当
现在
简而言之,无论你认为会发生什么,都不会发生。因此出现编译错误:
然而,尽管不是-
至于为什么在第二个例子中编译失败,
函数模板是指当提供模板参数时生成函数的构造。模板名称 单独地 不是函数。 |
|
|
2
-1
1)因为您需要一个对象传递给另一个线程,因此您需要用一个模仿引用但不是真正引用的对象来封装变量。
注意
2)C++需要一种方法来推导模板类型,编译器为每个不同的模板创建一个新函数。在这种情况下,必须指定类型:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |