示例
class
MyClass {
public
:
MyClass(
int
one, int
two
);
~MyClass();
private
:
int one, two;
friend
const
MyClass&
operator
*(
const
MyClass& left,
const
MyClass& rhs);
};
inline const
MyClass&
operator
*(
const
MyClass& left,
const
MyClass& right)
{
MyClass *result =
new
MyClass(left.one * right.one, left.two * right.two);
return
*result;
}
解决方案
不要返回用 new 创建的对象。
class
MyClass {
public
:
MyClass(
int
one, int
two
);
~MyClass();
private
:
int one, two;
friend
const
MyClass
operator
*(
const
MyClass& left,
const
MyClass& rhs);
};
inline const
MyClass
operator
*(
const
MyClass& left,
const
MyClass& right)
{
return
MyClass(left.one * right.one, left.two * right.two);
}