Re: member variable of STL string class
* Alex Blekhman:
"George" wrote:
I have tried the code, no warning and output is
"msdn.microsoft.com", what is wrong?
string foo()
{
string b;
...
return b;
}
In the code above you do not return a reference to the local
variable `b'. Instead, you return a copy of `b'. It is OK to retun
copies of local objects from a function.
However, you have other problem:
int main()
{
string& s1 = foo();
cout << s1 << endl;
return 0;
}
You bind a non-constant reference to a temporary copy of an
object. This is unsafe and conflicts with C++ Standard. Compiler
rightfully warns you with C4239 warning about this. If you don't
see this warning, then go to project settings and select warning
level 4 in C/C++ category.
And perhaps (best) add
#pragma warning( 4: 4239 )
#pragma warning( error: 4239 )
to source code.
Disclaimer: haven't tried it, but will do that. I just hadn't thought of it
earlier. Guess George's problem isn't that common, but, best be prepared! :-)
Cheers,
- Alf
--
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?