Why is destructor being called??

Hello all,

I have created a dynamic matrix class. I overloaded the multiplication operator as follows:

Code:

`Matrix Matrix::operator*(const Matrix &another) const //'const' keyword after => doesn't`

{ //modify data members

if (col != another.row)

{

cout<<"Error in matrix multiplication. Matrix dimensions do not agree."<<endl;

return *this;

}

Matrix prod(row,another.col);

Complex sum(0,0);

for(int i=0; i<row; i++) //i: 0 to 3

{

sum = 0;

for(int j=0; j<another.col; j++) //j: 0 to 2

{

for(int k=0; k<row; k++)

{

sum = sum + A[i][k] * another(k,j);

}

//cout<<"prod("<<i<<","<<j<<") = "<<sum<<endl;

prod(i,j) = sum;

}

}

return prod;

}

I wanted to do it in such a way that if I do

Code:

`Matrix A(5,5), B(5,1);`

//define the matrices

cout<<A*B<<endl; //I overloaded the cout operator as well

Just for the record, I created a complex number class, and I have defined a similar function:

Code:

`Complex Complex::operator +(const Complex &num) const`

{

Complex sum;

sum.real = real + num.real;

sum.imag = imag + num.imag;

return sum;

}

When I do

Code:

`Complex a(1,1), b(2,-2);`

cout<<a+b<<endl;

The destructor is called *after* it is displayed. But this does not work for the Matrix class, and I just can't figure out why. I thought I would save you all the trouble of going through all the code by only displaying what is pertinent. If you need all the code, pls let me know. Thanks

Bill