C++ Operador NO bit a bit


Ejemplo

Sobrecargar el bit a bit ( ~ ) es bastante simple. Desplácese hacia abajo para la explicación

Sobrecarga fuera de class / struct :

T operator~(T lhs)
{
    //Do operation
    return lhs;
}

Sobrecarga dentro de class / struct :

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

Nota: operator~ devuelve por valor, porque tiene que devolver un nuevo valor (el valor modificado), y no una referencia al valor (sería una referencia al objeto temporal, que tendría un valor de basura en él tan pronto como el operador está hecho). const porque el código de llamada debe poder modificarlo posteriormente (es decir, int a = ~a + 1; debería ser posible).

Dentro de la class / struct usted tiene que hacer un objeto temporal, porque no se puede modificar this , ya que modificaría el objeto original, que no debería ser el caso.