The general idea of const is to use it any time you will never change a value. For example:
Code:
class Foo
{
    public:
        void setdata( int d ) { data = d; }
        const int getdata( void ) { return data; }

    private:
        int data;
};
Here, we make 'getdata' constant, because it will never change anything. It's good practice, as mentioned before, it makes your interface easier to read.
Code:
const int dosomething( const int x, const int y );
Here at a glance I know that both 'x' and 'y' aren't going to be changed by this function, so I don't have to worry about making copies of whatever I'm passing to it.

And again:
Code:
void dosomething( const int &x, const int &y );
Were these not constant, I'd have to wonder if 'x' and 'y' were going to be changed when I pass them to this function. For simple functions like this, it may not be a big deal to dig up the function and find out what it's doing internally, however, that breaks the idea of using interfaces.

You don't want to have to worry about what is going on internally when you call "CreateSomeWindow( )" with whatever arguments you pass it. You don't want to see if it maps this and this here and there. You just want it to make you a window.

Thus, the addition of const helps people know a bit more about your interface without having to show them the guts of all your functions.

Quzah.