不要返回局部对象的引用或指针
来源:互联网 发布:数据库表设计例子 编辑:程序博客网 时间:2024/05/21 01:44
Primer C++ 第五版中文版 P201页提到了不要返回局部对象的引用或指针。
自己在学习vector容器的时候,希望建立一个vector容器存储的整数等差数列,开始写成这样:
vector<int> &vecSeries(int b, const int& dif, const int& n){vector<int> intVec(n);//向intVec中存入数字1~10vector<int>::iterator it = intVec.begin();vector<int>::iterator itE = intVec.end();while (it!=itE){*it = b;b+=dif;++it;}return intVec;}
编译时说会返回局部变量或临时变量的地址。翻回前文了解了问题所在。临时变量在函数结束后可能被释放,不安全,返回其引用无意义,还有可能在之后修改该引用的内容时候更改掉其他关键的内存区,发生奇怪的错误。
去掉vecSeries前面的&,改成下面就好:
vector<int> vecSeries(int b, const int& dif, const int& n){vector<int> intVec(n);//向intVec中存入数字1~10vector<int>::iterator it = intVec.begin();vector<int>::iterator itE = intVec.end();while (it!=itE){*it = b;b+=dif;++it;}return intVec;}
正如Primer C++中所说,要想确保返回值安全,我们不妨提问:引用所引用的是在函数之前已经存在的哪个对象?
0 0
- 不要返回局部对象的引用或指针
- effective c++ ------不要返回指向局部对象指针或引用,该返回对象就返回对象.
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 不要返回局部对象的引用
- 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- 不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
- Effective C++ 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- 条款 31: 千万不要返回局部对象的引用,也不要返回函数内部用 new 初始化的 指针的引用
- 返回指向局部变量的指针或引用的问题
- 返回指向局部变量的指针或引用
- 返回指向局部变量的指针或引用
- 杜绝返回函数内局部变量的指针或引用
- C++不可以返回局部变量的引用或指针
- 关于返回局部变量的指针或引用
- 返回局部对象的引用和返回局部对象的指针
- 不要返回指向局部变量的指针
- [HDU3699]组合情况DFS枚举
- 最大公约数的算法
- 1054. The Dominant Color (20)
- 最近遇到的一系列问题
- 基于memcache架构1TB高速内存池方案设计
- 不要返回局部对象的引用或指针
- ym——Android从零开始(18)(多线程下载-下)(新)
- error LNK2005: _main already defined in xxxx.obj
- jqGrid API
- HDU 1669 二分+多重匹配
- Linux动态库(含依赖库)实战与简析
- 【语言-C++】C++、C 创建挂起进程
- SAP web dynpro for abap 环境配置
- C语言:关键字static的作用