众泰汽车lp700:c++语言高手看过来???

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 13:34:56
#include<iostream.h>
class integer{
int i;

public:
integer(int t=100){cout<<"int---construtor"<<endl;i=t;}
~integer(){cout<<"int---destrutor"<<endl;}
friend integer operator-( integer& ii);
void print(){cout<<i<<endl;}
};

integer operator-( integer& ii)
{
cout<<"-------"<<endl;

ii.i=-ii.i;
return ii;
}
int main()
{
integer i1;
i1.print();
-i1;
i1.print();
return 0;
}
这个程序为什么只声明一个对象却调用了2次析构函数啊??我猜想是产生了一个临时对象,可是那得调用2次构造函数阿,程序只调用1次构造函数,却2次析构,不懂请教高手???

operator-在return时,临时生成了一个和ii相等的integer实例作为返回值,这个过程用的是默认的拷贝构造函数,你没有定义,所以没有显示任何东西。