Deberían las funciones miembro ser "constantes" si afectan el estado lógico, pero no el estado bit a bit?
Estoy escribiendo una clase que envuelve una API C heredada que controla un dispositivo de hardware. En un ejemplo simplificado, podría tener algo como:
class device
{
public:
void set_request(int data) { legacy_set_req(p_device, data); }
int get_response() const { return legacy_get_rsp(p_device); }
private:
device_handle_t *const p_device;
};
La clase en sí no tiene un estado bit a bit; por lo tanto, podría elegir declararset_request()
comoconst
, y el compilador estaría contento con eso. Sin embargo, desde un punto de vista semántico, ¿sería este el enfoque correcto, dado que afecta a laobservabl comportamiento del objeto? (es decir, el dispositivo de hardware encapsulado muchohac tiene estado.)