这两段代码有什么不同吗?(临时变量)
is there any difference between these two pieces of code? (temp variable)
这两段代码有什么区别吗?
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
变量将只存在到当前作用域结束。
相关文章:
- 为了方便起见,我应该避免公开私有字段变量吗
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 为什么在访问 vtkRenderWindow 的"交互器"变量时会发生段错误?
- 如何更好地检查两个 char 变量是否在一组值中?
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 为什么这两段使用 constexpr、__PRETTY_FUNCTION__ 和 char * 的代码有不同的结果?
- 命令行参数,cant 或两个变量
- (C++)比较两段代码,一段有效,一段无效,无法找出区别
- C++初级读本第五版字符串练习,要求两段不同的代码提供相同的输出
- 如何比较两段代码的性能
- 模板变量分配段故障11
- 这两段代码的函数定义是什么
- 具有相同逻辑的两段代码.一个给出预期的输出,而另一个则没有
- 由于在序列点之间修改变量两次而导致的 UB 是否会转移到"inner"范围?
- RHEL 6.0两段相似的代码:一个能编译,一个不能
- 为什么这两段代码给我不同的结果?
- 这两段代码有什么不同吗?(临时变量)
- 如何在c++中实现带有变量字段的简单类