按位 NOT 運算子
按位 NOT(~
)過載非常簡單。向下滾動以獲得解釋
在 class
/ struct
之外超載:
T operator~(T lhs)
{
//Do operation
return lhs;
}
class
/ struct
內部超載:
T operator~()
{
T t(*this);
//Do operation
return t;
}
注意:operator~
按值返回,因為它必須返回一個新值(修改後的值),而不是對該值的引用(它將是對臨時物件的引用,只要該臨時物件具有垃圾值,運算子完成)。不是因為呼叫程式碼之後應該能夠修改它(即 int a = ~a + 1;
應該是可能的)。
在 class
/ struct
內你必須製作一個臨時物件,因為你不能修改 this
,因為它會修改原始物件,但不應該是這樣。