| Apache Qpid > CppTips > ReturnStdStringByValue |
Home
Download
Getting Started
Documentation
Mailing Lists
Issue Reporting
FAQ/How to
Getting Involved
Qpid Integrated with..
Source Repository
Building Qpid
Developer Pages
QMF
People
License
Project Status
Acknowledgments
What is AMQP ?
AMQP Specification Download

Don't do this:
std::string& f(); const std::string& g(); // Not much better
Instead do this:
std::string f(); std::string g();
std::string is designed expressly to allow you to treat strings as simple pass-by-value types, like int. It's efficient to return by value rather than reference and it avoids core dumps if the real string hidden away in f gets deleted before the reference. In particular it allows f() to compute once-off values and forget about them, e.g.:
std::string hello(const std::string& name) { return "hello " + name; }
With the "&" style return this would be an immediate disaster as the returned reference is invalid before the caller even gets it! NB. The last example contains another error! See BewareOfStringPromotion.