C++11 - 右值引用

临时空间
临时空间具有常性,什么时候会产生临时空间呢?
1、函数传值返回
把aa拷贝给临时空间,如果是很大的对象并且进行深拷贝,消耗会很大
C++11 - 右值引用_第1张图片
证明:
这是list模拟实现迭代器的==和!=重载时,while( it! = lt.end() ) 时 lt.end()传值返回产生了临时空间C++11 - 右值引用_第2张图片

C++11 - 右值引用_第3张图片

2、表达式的返回值是一个临时变量
x + y
func() + 3
在这里插入图片描述

3、无论是强制类型转换还是隐式类型转换,都会开辟临时空间,因为不能修改原本变量的值,所以形参要加上const,因为临时空间具有常性
C++11 - 右值引用_第4张图片

问题:
eax和xmm0到底算不算临时空间呢?

C++11 - 右值引用_第5张图片

C++11 - 右值引用_第6张图片

你可能感兴趣的:(c++)