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