函数 千万不要返回“局部对象”的引用或者指针
2009-11-16 11:22
435 查看
请看下列两个代码
代码1:
1 const string manip(const string&);
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
代码2:
1 const string &manip(const string&);
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string &manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
代码1是正确的。代码2的manifp函数,返回了局部对象的引用。运行时会出现不可预知的错误。
代码1:
1 const string manip(const string&);
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
代码2:
1 const string &manip(const string&);
2
3 void main()
4 {
5 string input;
6 cin >> input;
7 cout << "Your input is: " << manip(input)<< endl;
8 }
9
10 const string &manip(const string& s)
11 {
12 string ret = s;
13 return ret;
14 }
15
代码1是正确的。代码2的manifp函数,返回了局部对象的引用。运行时会出现不可预知的错误。
相关文章推荐
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- effective C++笔记之条款31、32: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针所指对象的引用、尽可能地推迟变量的定义
- Effective C++ 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- 条款 31: 千万不要返回局部对象的引用,也不要返回函数内部用 new 初始化的 指针的引用
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 关于函数不能返回局部对象的引用或者局部对象的指针
- 不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- 不要返回局部对象的引用或指针
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- 杜绝返回函数内局部变量的指针或引用
- c++返回函数局部对象的引用
- 返回局部对象的引用和返回局部对象的指针