Topic: Semantics operator->()
Author: jjb5@cornell.edu (Joel Bender)
Date: 1995/08/25 Raw View
In article <41gq8b$1jm@tango.cs.wustl.edu> Douglas C. Schmidt wrote:
> I've got a question about the behavior of operator->(), in
> particular, can it return a pointer to a builtin type?
I can never seem to find where this is defined in the ARM, but
operator->() can only return something where operator->() is defined.
Seems kinda strange, but it makes sense.
struct S { int s; };
S *p;
class C { S *operator->(void); };
C c;
In this case "c->s" is OK because "c.operator->()" returns something of type
pointer to S and you would expect to have "p->s" work. The way I think
about this now is "p->s" is the same as "p.operator->().s".
So "c->s" is the same as "c.operator->().operator->().s".
int *px;
So *px is meaningful, but px-> is not defined, nor is "px.operator->()".
Note that "px.operator*()" IS defined, so you could do something like this:
class Q { int& operator*(void); };
Q q;
Now "*q" is an integer, the same one as refered to by "q.operator*()".
Does this help?
Joel
---
[ comp.std.c++ is moderated. Submission address: std-c++@ncar.ucar.edu.
Contact address: std-c++-request@ncar.ucar.edu. The moderation policy
is summarized in http://dogbert.lbl.gov/~matt/std-c++/policy.html. ]