C++ 按位NOT运算符

示例

重载按位的NOT(~)非常简单。向下滚动以获取说明

class/以外的重载struct:

T operator~(T lhs)
{
    
    return lhs;
}

class/中的重载struct:

T operator~()
{
    T t(*this);
    
    return t;
}

注意:operator~按值返回,因为它必须返回一个新值(修改后的值),而不是对该值的引用(这将是对临时对象的引用,该临时对象在运算符操作后将立即带有垃圾值)已经完成了)。const两者都不是,因为调用代码之后应该能够对其进行修改(即int a = ~a + 1;应该可以)。

在class/内,struct您必须创建一个临时对象,因为您无法修改this,因为它会修改原始对象,事实并非如此。