Indirection operator and write access

  • Follow


Hi

Here is the scenario:

There is a pointer variable 'x'.

For what type of 'x' would the following show a write access on 'x'

     std::cout<<*x<<'\n'; //showing write access on x [what's its type?]

I could not think of any possible situation apart from overloaded '*' operator having write operation inside the definition itself.

Hope my question is clear.
Thanks
0
Reply prasoonsaurav.nit 6/2/2012 5:22:06 PM

On 6/2/2012 1:22 PM, Paradigm wrote:
> Here is the scenario:
>
> There is a pointer variable 'x'.
>
> For what type of 'x' would the following show a write access on 'x'
>
>       std::cout<<*x<<'\n'; //showing write access on x [what's its type?]
>
> I could not think of any possible situation apart from overloaded '*'
> operator having write operation inside the definition itself.

You can't overload the operator* for pointers.  That's a built-in one. 
Once you dereference *x, you get a reference to the object.  The pointer 
variable does not have any play in dealing with that, so it seems that 
the write access to 'x' itself has nothing to do with '*x'.

V
-- 
I do not respond to top-posted replies, please don't ask
0
Reply v.bazarov (788) 6/3/2012 1:31:34 PM


Paradigm <prasoonsaurav.nit@gmail.com> writes:

> There is a pointer variable 'x'.
>
> For what type of 'x' would the following show a write access on 'x'
>
>      std::cout<<*x<<'\n'; //showing write access on x [what's its type?]

What does "showing write access on x" mean?

> I could not think of any possible situation apart from overloaded '*'
> operator having write operation inside the definition itself.

You can't overload *. I can't see how x could me modified here, but note
that anything can happen inside the version of operator<<(ostream&,...)
called at that point. Here is an example:

class X { ... };
class Y {
   public:
     Y(const X & x) { ... }
};
ostream & operator<<(ostream & os, const Y & y) {...}

If x is of type X*, your line of code may well call the version of op<<
on Y, which in turn can do anything. This is not a write access to x,
but still execution of an arbitrary amount of code.

-- Alain.
0
Reply alain14 (254) 6/3/2012 2:27:54 PM

Do you know what the "word" 'paradigm' means?

(Deal with it, I top-posted, on purpose).

"Paradigm" <prasoonsaurav.nit@gmail.com> wrote in message 
news:5657706f-2eff-4782-95c8-b086d750dee7@googlegroups.com...
> Hi
>
> Here is the scenario:
>
> There is a pointer variable 'x'.
>
> For what type of 'x' would the following show a write access on 'x'
>
>     std::cout<<*x<<'\n'; //showing write access on x [what's its type?]
>
> I could not think of any possible situation apart from overloaded '*' 
> operator having write operation inside the definition itself.
>
> Hope my question is clear.
> Thanks 


0
Reply jnews1 (8) 7/15/2012 7:10:16 AM

3 Replies
50 Views

(page loaded in 0.102 seconds)


Reply: