C++函数的返回值在内存中的传递过程
1.返回值:
int test () { int a=1; return a; }
- 返回值时最简单的方式,它的操作主要在栈上,变量a在函数结束后会删除,为了返回a的值,系统会在内部建立一个临时变量保存a的值,以返回给调用该函数的表达式,调用结束后变量便不再存在。如果a是简单地数据类型也无所谓,不是很占用内存,如果a是大的自定义类型的数据,那么对a的复制将会占用比较大的内存。函数返回值是右值,不能进行运算符操作。
2.返回指针:
int *test2() { int *b=new int(); *b=2; return b; }
3.返回引用:
int& test2() { int *b=new(); *b=2; return b; }
- C++中成员函数返回对象与返回引用
- 返回对象与返回引用的区别:函数原型与函数头
- Car run(const Car&)//返回对象
- Car& run(const Car&)//返回引用
- 返回对象涉及到生成对象的副本。因此返回对象的成本包括了调用复制构造函数来生成副本所需要的时间和调用析构函数删除副本所需要的时间。返回引用可以节省时间和内存。直接返回对象与函数直接return a返回值一样。都会生成临时副本。
- 返回对象与返回引用的区别:函数原型与函数头