Can references refer to invalid location in C++?

In C++, Reference variables are safer than pointers because reference variables must be initialized and they cannot be changed to refer to something else once they are initialized. But there are exceptions where we can have invalid references.

1) Reference to value at uninitialized pointer.

filter_none

edit
close

play_arrow

link
brightness_4
code

int *ptr;
int &ref = *ptr;  // Reference to value at some random memory location

chevron_right


2) Reference to a local variable is returned.



filter_none

edit
close

play_arrow

link
brightness_4
code

int& fun()
{
   int a = 10;
   return a;
}

chevron_right


Once fun() returns, the space allocated to it on stack frame will be taken back. So the reference to a local variable will not be valid.

Please write comments if you find anything incorrect in the above GFact or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


7


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.