你写的函数version3有问题--声明函数返回的类型为const string &,而你返回的实际是一个临时的string对象,你知道的,返回一个指向临时变量的引用是肯定错误的,因为当version3函数执行完毕,临时对象temp会在栈中被清除,所以函数会返回指向一个不存在的对象的引用,因此是错误的。
解决办法:修改version3的定义
const string & version3( string &s1,const string &s2)
{
s1=s2+s1+s2;
return s1;
}
这样就OK了。
const string & version3( string &s1,const string &s2)中返回局部对象的引用,在函数返回时,局部对象析构。引用丢失。