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.

Reply via email to