帮我找找程序段中的错误(可能是“返回值是局部变量的引用”)!
以下是朋友问我的一道找错题目。
以下代码段有错误,请指出来(很严重的错误!)。
我看了很久,认为是“返回值是局部变量的引用”这个错误。但是我在VC++.NET 2005,能编译通过,并且运行正常。请问是这个错误正确吗?如果不是,真正的错误是什么呢?
class Complex
{
public:
double real, imag;
Complex(double real = 0.0, double imag = 0.0)
{
Complex::real = real;
Complex::imag = imag;
}
};
Complex& operator+( Complex& a, Complex& b)
{
Complex *p = new Complex;
p-> real = a.real + b.real;
p-> imag = a.imag + b.imag;
return *p;
}
[解决办法]
是内存泄漏。凡new就必须有delete