class X { void foo() const { } void moo() { } }; X a; const X b; a.foo(); // ok a.moo(); // ok b.foo(); // ok, becuz b (this) is const b.moo(); // NOT OK, moo() expects a non-const "this", but b was declared const (const X b)