[webkit-dev] Why Foo& bar and not Foo &bar?
Maciej Stachowiak
mjs at apple.com
Thu Sep 15 17:40:41 PDT 2005
On Sep 15, 2005, at 5:28 PM, Eric Seidel wrote:
> http://webkit.opendarwin.org/blog/?page_id=25
>
> Pointer and reference types - pointer types should be written with
> a space between the type name and the * (so the * is adjacent to
> the following identifier if any). For reference types, the & goes
> next to the type name.
>
> Why?
It makes more sense in C++ to think of reference-ness as part of the
type. In fact, many C++ programmers will also write the * next to the
type name, but we decided not to do this to avoid diverging from the
typical ObjC and C practice. Another way to think of it is that a Foo
* is accessed through different syntax than a Foo (you use * to get
the value, -> to dereference a field or method, etc), but a Foo&
behaves syntactically just like a Foo. If you declare "Foo *bar" then
indeed "*bar" has type Foo, but if you declare "Foo &bar" it is not
the case that "&bar" has type Foo, in fact it will have type "Foo *".
It only makes sense to say bar has type "Foo&".
>
> What if you write:
>
> Foo& bar, & baz?
We don't like multiple declarations on one line either, proper style
for this would be:
Foo& bar;
Foo& baz;
But even that is not right, because you can't declare a reference
without initializing it (unseated references are forbidden in C++),
and you also rarely want a reference as a local variable.
>
> Makes no sense to me.
>
> -eric
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at opendarwin.org
> http://www.opendarwin.org/mailman/listinfo/webkit-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/webkit-dev/attachments/20050915/85bdab96/attachment.html
More information about the webkit-dev
mailing list