'final' variables

Derek Parnell derek at nomail.afraid.org
Tue Mar 20 16:14:21 PDT 2007


On Tue, 20 Mar 2007 16:52:14 +0100, Frits van Bommel wrote:

> Stewart Gordon wrote:
>> Tyler Knott Wrote:
>>> Lionello Lunesu Wrote:
>>>> What's the use of "final" for variables?  I'm saying "for 
>>>> variables" because for methods the benefit is only too clear.
>>> Because the "const" keyword is being repurposed for read-only 
>>> references to mutable or non-mutable data, we need a new 
>>> keyword for non-mutable variables.
>> <snip>
>> 
>> C++ manages with const for both, so why can't D?  What circumstance is there in which either keyword would be valid with different meanings?
> 
> If you apply "const" to a class reference, how would you determine which 
> of {reference,object} the const applies to?
> 
> - If to the reference only, you can't express the constness of objects.
> - If to the object only, you can't express non-rebindability of the 
> reference. (C++ doesn't have this problem, since the only references it 
> has are implicitly final all by themselves)
> - If to both, you can only express constness of objects by 
> simultaneously disallowing the reference to be rebound. Not nice.
> 
> I think that covers all cases (except 'neither', but that simply doesn't 
> make any sense ;) ).

What happens with ...

   final const Foo f;
   invariant Foo f;

do either of these mean that both the reference and the object is not to be
modified?

-- 
Derek
(skype: derek.j.parnell)
Melbourne, Australia
"Justice for David Hicks!"
21/03/2007 10:13:28 AM



More information about the Digitalmars-d mailing list