按位 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,因為它會修改原始物件,但不應該是這樣。