'final' variables

Frits van Bommel fvbommel at REMwOVExCAPSs.nl
Tue Mar 20 08:52:14 PDT 2007


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 ;) ).



More information about the Digitalmars-d mailing list