Final, Const, Invariant
Andrei Alexandrescu (See Website For Email)
SeeWebsiteForEmail at erdani.org
Fri Mar 23 09:02:09 PDT 2007
Lutger wrote:
> David B. Held wrote:
>> Since the Extended Type Design thread has blown my stack (and taken
>> all the heap in my mail reader), here is my explanation of these
>> concepts for anyone who might still be confused. Yes, the explanation
>> is cartoony, but I hope it helps:
>>
>
> Haha thanks, only know I understand it clearly, time to read some of
> that thread again...
>
> It is much clearer though than C++, for there it depends on where you
> put the const which kind of meaning it has.
>
> To sum it up, there are three kinds of 'immutability', where one (const)
> is a subset of another (invariant). With this, we can control the
> semantics we want precisely and combine them to get a grand total of
> five different meanings:
>
> final Object x = y; // x won't ever reference anything but y
> const Object* x = &y; // y can't be changed by x
> invariant Object x = new Object; // x can't be changed at all
> final const Object* x = &y; // x points to y forever and can't change y
> final invariant Object* x = &y; // same as above but y will never change
>
> This is right?
Yah.
Andrei
More information about the Digitalmars-d
mailing list