返回对象和返回对象的引用的区别···
2011-10-30 00:46
253 查看
http://topic.csdn.net/t/20050310/11/3839506.html
http://topic.csdn.net/u/20080905/10/ca32bacb-6d6d-4996-9e12-c4b61cdabb44.html
两者的处理方式是不同的,
当返回局部对象的值时,会产生一个临时对象,局部对象将值拷贝给该临时对象,
所以当函数结束时,尽管局部已经析构了,但是它保存了一个副本在临时对象中,当函数接收完局部对象的值后(其实此时又进行了一次拷贝)
临时对象析构。
但返回局部对象的引用时,就出问题了,因为引用相当于是一个别名,也就是说返回局部引用所对应的内存快的内容给函数返回的接收对象,当函数
结束时,局部对象被析构,内存块的内容变为未定义内容,所以出错。
http://topic.csdn.net/u/20080905/10/ca32bacb-6d6d-4996-9e12-c4b61cdabb44.html
两者的处理方式是不同的,
当返回局部对象的值时,会产生一个临时对象,局部对象将值拷贝给该临时对象,
所以当函数结束时,尽管局部已经析构了,但是它保存了一个副本在临时对象中,当函数接收完局部对象的值后(其实此时又进行了一次拷贝)
临时对象析构。
但返回局部对象的引用时,就出问题了,因为引用相当于是一个别名,也就是说返回局部引用所对应的内存快的内容给函数返回的接收对象,当函数
结束时,局部对象被析构,内存块的内容变为未定义内容,所以出错。
相关文章推荐
- 极限研究-"&"函数返回引用与返回普通类型的区别
- 类成员函数返回对象和返回引用的区别
- C++返回对象和引用的区别
- 返回vector对象与引用的区别
- 返回对象时别返回引用&派生说明符导致的访问权限问题
- 返回vector对象与引用的区别
- 赋值运算符重载函数 返回引用和返回对象的区别
- 函数返回对象和返回对象的引用的区别
- 重载=时返回对象引用与非引用的区别
- 在json封装成对象返回前台数据中,null和""区别
- c++返回引用和返回对象的区别
- 返回对象和返回对象的引用的区别
- operator=返回对象和引用的区别
- 对象赋值(=)、引用(&)、克隆(clone)的区别
- C#linq和lamda两种写法返回的集合中的对象元素引用情况不同,循环计算值要小心
- 对象引用与对象的区别
- C/C++一些特殊关键字的作用&指针和引用的区别
- Effective C++ 第二版 22)传引用 23)返回对象 24)函数重载vs缺省值
- 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针
- JAVA与C++传递、赋值以及返回对象(指针、引用)