範例
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){
//比較位址
return
*
this
;
}
if
(rightValue.field ==
this
.field){
return
*
this
;
}
}