函数返回值为自定义的类型与引用类型的区别
2014-01-17 15:28
363 查看
从输出可以看出:
对象a的起始地址与函数f2()的返回值地址相同,f2()的返回为引用;
对象b的地址与对象a的地址不同,两个对象在内存中占有独立的空间,利用返回的引用类型初始化b,而不是在内存中再生成一个a对象的副本,然后再初始化b;
对象a的起始地址与函数f1()的返回值地址不相同,f1()的返回不是引用,在内存中生成了一个对象a的副本;
函数f()返回局部对象的引用是会有警告的,因为函数返回后,局部变量的内存将被释放,选用这个例子只是为了测试编译器在返回是临时对象的引用时是怎样处理的。可以看出,即使是返回一个临时对象的引用,编译器也不会为了确保安全而生成一个临时对象返回。
相关文章推荐
- 函数返回值为引用类型
- C# 数据类型的引用类型、值类型内存存储方式以及区别; 函数参数传递的引用传递(址传递)、值传递区别
- 函数指针和函数返回值为引用的区别
- 极限研究-"&"函数返回引用与返回普通类型的区别
- 函数有返回值且返回值为引用类型的问题返回null
- C++ 返回值类型与引用类型的区别
- 黑马程序员_学习日记37_601基础加强(enums_truct_类型转换_值类型与引用类型_异常处理_函数返回值)
- 深入解析js中基本数据类型与引用类型,函数参数传递的区别
- 函数返回值为引用类型
- 函数返回值:引用类型和非引用类型
- 函数返回值是否使用引用类型的问题:理解引用、返回值
- 指针函数(函数返回值是某一类型指针)与函数指针的区别
- C++函数中返回引用和返回值的区别
- Go内建函数(对于引用类型) new 和 make 的区别
- 函数返回值是否使用引用类型的问题:理解引用、返回值
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- 函数返回值是否使用引用类型的问题:理解引用、返回值
- C/C++的区别(默认值、内联函数、函数重载、const、引用、参数、返回值)
- 函数的返回值的类型是引用类型和非引用类型的区别
- 引用类型和值类型传入函数的区别