Const member function when operation has clear side effects
<p>Imagine I have a class "Window" with a member function "show" which causes the underlying window to become visible on the screen.</p>

<p>Because I'm calling an underlying windows API to achieve this I'm not in any way altering the state of my "Window" object and yet clearly there is a large, obvious change in state of my window caused by calling this ( a window appearing on the screen and being able to be interacted with by users)</p>

<p>So I should declare my function as -</p>

<pre><code>void Window::show() const;
</code></pre>

<p>because as far as the Window object is concerned this function doesn't change any state and therefore can be called on "const Window" objects. But somehow that doesn't seem right as calling that function clearly in some sense changes the state of the object.</p>
