On 2012-05-02 18:01, Mehrdad wrote:
When you're making the object 'const', you're not making the
assumption that no one who derives from this class need mutable state.
What you're doing is asserting that bits belonging to this object
needs to be 'const' to preserve sequential consistency across threads
or for other reasons.

Bits belonging to *this* object? I thought const was transitive...

If the derived class casts away const, it breaks that contract.

So you're saying the same thing: Derived classes CANNOT have mutable
state...

No:

interface Foo
{
    void foo () const;
}

class Bar : Foo
{
    int x;

    void foo () const {}

    void bar ()
    {
        x++;
    }
}

void main()
{
    auto bar = new Bar;
    bar.bar();
    writeln(bar.x);
}

--
/Jacob Carlborg

Reply via email to