重载按位的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,因为它会修改原始对象,事实并非如此。