问一个关于操做符重载的问题!
我写了一个一维数组类!
CVector
重载了+ - * /
CVector operator *(const CVector& vtor1, const double& dv2)
{
CVector vtor, v1;
v1 = vtor1;
vtor = v1.Mul(dv2);
return vtor;
}
v = v*2;
DEBUG运行到这里就出错!
DEBUG窗口里有这句话
HEAP[PowerTwo.exe]: Invalid Address specified to RtlValidateHeap( 340000, 34e090 )
这里为什么会说是无效的内存地址!
堆栈里
NTDLL! 77f813b1()
NTDLL! 77fb6972()
NTDLL! 77f8be26()
KERNEL32! 77e67345()
_CrtIsValidHeapPointer(const void * 0x0034e0b0) line 1697
_free_dbg_lk(void * 0x0034e0b0, int 1) line 1044 + 9 bytes
_free_dbg(void * 0x0034e0b0, int 1) line 1001 + 13 bytes
operator delete(void * 0x0034e0b0) line 351 + 12 bytes
CVector::Release() line 47 + 18 bytes
CVector::~CVector() line 41
operator*(const CVector & {...}, const double & 2.0000000000000000) line 228 + 51 bytes
CPowerTwoView::OnFlow() line 232 + 46 bytes
不用重载过的操作符就没有这个问题!
检查了析构,内存释放那里也没有什么问题啊!
请问重载2元操作符有什么要注意的地方吗(特别是在类里有内存分配释放)?