C++函数调用的一个错误,为什么执行的时候有问题,编译没问题啊?

2024-12-17 16:11:41
推荐回答(2个)
回答1:

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

回答2:

const string & version3( string &s1,const string &s2)中返回局部对象的引用,在函数返回时,局部对象析构。引用丢失。