不能返回局部对象的引用
2016-07-08 18:42
253 查看
#include<iostream> #include<string> using namespace std; string make_plural(size_t, const string&, const string&); const string &shorterString(const string &, const string &); const string &mainip(const string&); char &get_val(string &, string::size_type); int main(void) { cout << make_plural(1, "dog", "s") << endl; cout << make_plural(2, "dog", "s") << endl; string string1 = "1234"; string string2 = "abc"; cout << shorterString(string1, string2) << endl; cout << mainip("jiajia") << endl; string s("123456"); cout << s << endl; get_val(s, 0) = 'a'; cout << s << endl; getchar(); return 0; } //返回非引用 string make_plural(size_t i, const string &word, const string &ending) { return (i == 1) ? word : word + ending; } //返回引用 const string &shorterString(const string &s1, const string &s2) { return s1.size()<s2.size() ? s1 : s2; } const string &mainip(const string &s) { string ret = s; return ret; } //引用返回左值 char &get_val(string &str, string::size_type ix) { return str[ix]; }由于局部对象的生存周期在创建到函数结束,如果返回它的引用,那在使用时得到的是一个不存在的对象,将会出错。
相关文章推荐
- Android UI性能问题探讨
- Android 状态栏、titlebar的高度计算
- qt#4信号触发的槽函数到底是哪个线程响应
- 仿qq侧滑删除Item
- HTML5-CSS面试题
- windows下MinGW编译cblas基本线性代数库
- MVC项目中如何判断用户是在用什么设备进行访问
- mongo&node
- PAT--1071. Speech Patterns
- 关于数据结构中冒泡排序和选择排序的总结
- NET Core-学习笔记(一)
- Sql的递归查询
- 第十三天:制定预算
- javascript获取点击<li>标签里的值
- CodeForces 679A Bear and Prime 100
- 第十三天:制定预算
- JSP中脚本、声明和表达式的本质区别
- python操作mysql数据库(增删查改)
- unicode和MBCS(多字节字符集)的关系
- python 遍历 list