c++ 错误: reference to local variable ‘...’ returned

当返回函数的零时量的引用的时候就会出现这种情况。

3.cc: In function ‘const string& add_(const string&, const string&, const string&)’:
3.cc:6:12: warning: reference to local variable ‘s’ returned [-Wreturn-local-addr]
     string s = s1;
例如:

#include <iostream>
#include <string>
using namespace std;
const string &  add_(const string &s1,const string & pre,const string & behind)
  {
    string s = s1;    
    s.insert(0,pre);
    s.append(behind);
    return s;
  }
int main()
{
  string name  = "robert";
  string pre = "Mr.";
  string hi = "Jr.";
  string new_name = add_(name,pre,hi);
  cout << new_name << endl;

  return 0;
}

编译结果是:

r@r-Sys:~/c++/ex$ g++ 3.cc -o 123
3.cc: In function ‘const string& add_(const string&, const string&, const string&)’:
3.cc:6:12: warning: reference to local variable ‘s’ returned [-Wreturn-local-addr]
     string s = s1;
            ^

错误分析:

c++函数在结束的时候会销毁零时量,函数返回零时量的引用就当然错误了。因为它已经被销毁,所以,它的引用也就没有什么含义了。

猜你喜欢

转载自blog.csdn.net/digitalkee/article/details/107967062
今日推荐