我编写了以下代码来测试它:
struct X
{
char* x;
X()
{
x = new char('a');
}
~X()
{
*x = 'b';
delete x;
}
};
void foo(const X& x)
{
}
void goo(X& x)
{
}
int main()
{
foo(X());
goo(X());
}
两个函数退出后都会调用临时对象的析构函数,但我认为您只能将临时对象绑定到const
引用。那为什么会goo
起作用?
是 UB 和 MSVS 错了,还是没问题?