按位 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,因为它会修改原始对象,但不应该是这样。