析构函数的作用的疑问
#include <iostream>
using namespace std;
class CAdd
{
public:
CAdd(int val)
{
cout<<"Parameter"<<endl;
_val = val;
}
CAdd(const CAdd &add)
{
_val = add._val;
cout<<"Copy"<<endl;
}
CAdd operator + (const CAdd &b)
{
return CAdd(_val + b._val);
}
friend ostream& operator << (ostream &os, const CAdd &out)
{
os<<out._val;
return os;
}
~CAdd( )
{
cout<<"~CAdd( )"<<endl;
}
int _val;
};
int main( )
{
CAdd a(5),b(7);
CAdd sum = a + b;
cout<<sum._val<<endl;
return 0;
}
有析构函数的时候输出:
Parameter
Parameter
Parameter
12
~CAdd( )
~CAdd( )
~CAdd( )
没有析构函数的时候输出:
Parameter
Parameter
Parameter
Copy
Copy
12
为什么没有析构函数时会多调用两次Copy构造函数呢?