'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