函数返回
来源:互联网 发布:淘宝客服有5%的提成吗? 编辑:程序博客网 时间:2024/05/20 10:12
1、返回非引用类型
函数的返回值用于初始化在调用函数处创建的临时对象。在求解表达式时,如果需要一个地方储存其运算结果,编译器会创建一个没有命名的对象,这就是临时对象。
用函数返回值初始化临时对象与用实参初始化形参的方法是一样的。如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。当函数返回非引用类型时,其返回值既可以是局部对象,也可以是求解表达式的结果。
2、返回引用
当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。例如,考虑下面的函数,此函数返回两个 string 类型形参中较短的那个字符串的引用:
// find longer of two stringsconst string &shorterString(const string &s1, const string &s2){
return s1.size() < s2.size() ? s1 : s2;
}
形参和返回类型都是指向 const string 对象的引用,调用函数和返回结果时,都没有复制这些 string 对象。
3、千万不要返回局部对象的引用
理解返回引用至关重要的是:千万不能返回局部变量的引用。当函数执行完毕时,将释放分配给局部对象的存储空间。此时,对局部对象的引用就会指向不确定的内存。考虑下面的程序:
// Disaster: Function returns a reference to a local objectconst string &manip(const string& s){
string ret = s;// transform ret in some wayreturn ret; // Wrong: Returning reference to a local object!
}
这个函数会在运行时出错,因为它返回了局部对象的引用。当函数执行完毕,字符串 ret 占用的储存空间被释放,函数返回值指向了对于这个程序来说不再有效的内存空间。
4、千万不要返回指向局部对象的指针
函数的返回类型可以是大多数类型。特别地,函数也可以返回指针类型。和返回局部对象的引用一样,返回指向局部对象的指针也是错误的。一旦函数结束,局部对象被释放,返回的指针就变成了指向不再存在的对象的悬垂指针。
0 0
- 函数返回
- 返回函数
- 返回函数
- 返回函数
- 返回函数
- 返回函数
- 利用函数返回函数
- 函数返回值 返回引用
- 函数返回指针|函数返回地址
- 函数返回表类型
- 一个函数返回多个值
- 返回记录集函数
- 返回当前时间函数
- 函数有多个返回值
- Javascript函数返回多个值
- 函数返回出错
- 函数返回值
- 函数返回值
- hdu 4910 Problem about GCD
- ttserver启动、关闭和基本操作
- Bash常用的几个配置文件
- 毕业五年后决定
- Tokyo Tyrant(TTServer)系列-备份恢复和增加从库
- 函数返回
- 阿依长公主是将来的土国女王2014-08-04
- Android support V3 v7 v13的区别
- HDOJ 题目2059 龟兔赛跑(动态规划)
- 【参考】给大数据量的磁盘文件排序
- 阿依长公主是将来的土国女王2014-08-04
- C/C++函数指针
- 我的第一个 Mono for Android 应用(张志敏)
- hdu 1074 状态压缩+DP Doing Homework