引用指向“临时变量”

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()
上一篇 下一篇

猜你喜欢

热点阅读