引用指向“临时变量”
2023-06-13 本文已影响0人
NullUser
class A
A func();
A &a = func();
情况一
| 版本 | 函数内变量 | 接受者 |
|---|---|---|
| Debug | 局部变量 | 对象 |
A func()
{
A a;
return a;
}
void main()
{
A a = func();
}
结果:
A()
A move construct
~A()
~A()
情况二
| 版本 | 函数内变量 | 接受者 |
|---|---|---|
| Release | 局部变量 | 对象 |
A func()
{
A a;
return a;
}
void main()
{
A a = func();
}
结果:
A()
~A()
情况三
| 版本 | 函数内变量 | 接受者 |
|---|---|---|
| Debug | 局部变量 | 引用 |
A func()
{
A a;
return a;
}
void main()
{
A &a = func();
}
结果:
A()
A move construct
~A()
~A()
情况四
| 版本 | 函数内变量 | 接受者 |
|---|---|---|
| Release | 局部变量 | 引用 |
A func()
{
A a;
return a;
}
void main()
{
A &a = func();
}
结果:
A()
~A()
情况五
| 版本 | 函数内变量 | 接受者 |
|---|---|---|
| Debug | 临时变量 | 引用 |
A func()
{
return A();
}
void main()
{
A &a = func();
}
结果:
A()
A move construct
~A()
~A()
情况六
| 版本 | 函数内变量 | 接受者 |
|---|---|---|
| Release | 临时变量 | 引用 |
A func()
{
return A();
}
void main()
{
A &a = func();
}
结果:
A()
~A()