Suggestion: object const'ness
Derek Parnell
derek at psych.ward
Sun May 21 04:32:45 PDT 2006
.
>
> If you see a signature like this:
>
> void doSomething(in SomeObj obj1, inout SomeObj obj2);
>
> You'll instantly expect that function "doSomething" doesn't modify obj1
But it doesn't modify 'obj1'. Remembering that 'obj1' is the reference to
the object and not the object itself.
> and do posibly modify obj2 (the object and not it's reference). Why
> would you want (in the most of the cases) to make "in" the reference
> itself?
Don't know. Simplier I guess.
> Currently D 'in Obj p' "behaves as" the rarely-used 'Obj *const p' and
> not as the widely and common 'const Obj *p' of C++ ("behave as" because
> I use pointers instead of references to illustrate the underlying
> behavior and C++ references are always const).
>
> Const is another level of protection against unintended behavior (i.e.
> bugs). In C++, const *can* be circumvented but one has to be horribly
> explicit to do that. No way you would unintentionally do that.
So everyone repeat after me ... D is not C++, D is not C++, D is not C++,
... ;-)
--
Derek Parnell
Melbourne, Australia
More information about the Digitalmars-d
mailing list