次のように、クラスの演算子 + をオーバーロードしようとしています。
MyClass MyClass::operator +(const MyClass& rval) const {
MyClass ret(m_src); // m_src is member of MyClass: char* m_src;
ret.Add(rval); // this->m_src + rval, this method work correctly
return ret; // so, in ret.m_src I have correct value
} // but after this C++ call destructor for ret
デストラクタ:
delete[] m_src; // because in some methods I allocate dynamic memory
したがって、デストラクタはメモリをクリアし、関数はゴミを返します。どうすればこの状況を回避できますか? デストラクタを削除すると、関数は正常に動作しますが、この場合、メモリリークが発生します:(
PS: 残念ながら、オーバーロード + のプロトタイプを変更することはできません。ありがとう。