这两段代码有什么不同吗?(临时变量)

is there any difference between these two pieces of code? (temp variable)

本文关键字:变量 两段 代码 什么      更新时间:2023-10-16

这两段代码有什么区别吗?

CPoint temp(x,y);
some_func(temp);

some_func(CPoint(x,y));

CPoint对象的生存期不同。

在第一种情况下,创建了一个名为'temp'的变量。在声明它的作用域退出之前,它不会被销毁。

在第二种情况下,创建一个真正的临时值并传递给函数,该值将在some_func返回后立即销毁。

是的,在第一种情况下,temp变量直到作用域结束才会被销毁。在第二种情况下,它将是。

如果你的函数some_func()接受一个非const引用作为参数,第二个将不会编译,因为你不能有一个引用,它将立即被销毁(当some_func返回时)。

在第一种情况下,如果您的some_func()函数接受引用,您应该意识到temp变量将只存在到当前作用域结束。