函数 千万不要返回“局部对象”的引用或者指针

请看下列两个代码

代码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函数,返回了局部对象的引用。运行时会出现不可预知的错误。

posted on 2009-11-16 11:22  ︶ㄣ第二名  阅读(833)  评论(0编辑  收藏  举报