这两段代码之间有什么区别吗?
CPoint temp(x,y);
some_func(temp);
和
some_func(CPoint(x,y));
答案 0 :(得分:2)
是的,在第一种情况下,temp var将在范围结束前销毁。在第二种情况下它将是。
如果函数some_func()
将非const引用作为参数,则第二个将不会编译,因为您无法引用将立即销毁的内容(当some_func
返回时)。
在第一种情况下,如果您的some_func()
函数接受引用,您应该知道temp
变量只会在当前作用域结束之前存在。
答案 1 :(得分:2)
CPoint对象的生命周期是不同的。
在第一种情况下,一个名为' temp'的变量被建造。在退出声明的范围之后,它才会被销毁。
在第二种情况下,创建一个真正的临时值并传递给该函数,一旦some_func返回,该函数将被销毁。