示例
class
MyClass
{
public
:
MyClass&
operator
=(
const
MyClass& rhs);
private
:
int
field;
};
MyClass
&
MyClass
::
operator
=(
const
MyClass
& rightValue)
{
if
(rightValue.field ==
this
.field){
return
rightValue
;
}
}
解决方案
赋值运算符中首先检查是否和自身相等。
class
MyClass
{
public
:
MyClass&
operator
=(
const
MyClass& rhs);
private
:
int
field;
};
MyClass
&
MyClass
::
operator
=(
const
MyClass
& rightValue)
{
if
(
this
== &rightValue){
//compares addresses
return
*
this
;
}
if
(rightValue.field ==
this
.field){
return
*
this
;
}
}