Yes, in some cases C++ const does not provide const-guarantees,
it's more like convention.
For example, you can write this:
class Class
{
public:
Class() : ptr(new int()) {}
~Class() { delete ptr; }
void setData(int data) const {
*ptr = data;
}
private:
int *ptr;
};
There is interesting feature here. You can create instances that
are const by its structure, but not by data. So const-method can
not change size of array (reallocate), but may change data. It
may be useful, for example, if you want to allow to change data
in graph or another data structure, but want to disallow to
add/remove vertices. Though it surely needs other definition
instead of const.