关于析构函数的问题,急啊!!!

来源:百度知道 编辑:UC知道 时间:2024/06/30 16:43:29
在我印象当中,应该是遇到 一个语句块的结尾,即花括号才会调用在该语句块内声明的对象的析构函数吧。可是为什么,我这个程序:
FunnyString operator*(const FunnyString& myString1,const FunnyString& myString2)
{
int l=(myString1.length>myString2.length)?myString2.length:myString1.length;
FunnyString result(myString1.length+myString2.length-1);
for(int i=0;i<2*l-2;i+=2)
{
result.myString[i]=myString1.myString[i/2];
result.myString[i+1]=myString2.myString[i/2];
}
result.myString[2*l-2]='\0';
return result;
}
根据我Debug into跟踪,他在没有return之前就把result给析构掉了,哪位高手可以帮忙解释一下。万分感谢

result 是临时对象。在return之前,已经把它copy到要返回到的地址了,所有就析构了。这个过程大致是这样:先产生result对象-将它拷贝到要返回的地址-析构它。

一楼正解

郁闷,我还是初级学者,发现C++的深奥了
得好好学习