现在的位置: 首页 > 综合 > 正文

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

2012年12月18日 ⁄ 综合 ⁄ 共 569字 ⁄ 字号 评论关闭

请看下列两个代码

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

抱歉!评论已关闭.