当返回函数的零时量的引用的时候就会出现这种情况。
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++函数在结束的时候会销毁零时量,函数返回零时量的引用就当然错误了。因为它已经被销毁,所以,它的引用也就没有什么含义了。