10
I am learning C++ from a background of mostly C and Java and I am curious on what is the best way to return an object in C++ without having to copy the object. From my understanding, C++11 introduced rvalue references (&&) to move data from a temporary variable (as oppose to copying). Example:
std::string getStr(){
return "Hello";
}
std::string &&hello = getStr();
Another way I could think of is using a shared pointer.
std::tr1::shared_ptr<std::string> getStr(){
std::tr1::shared_ptr<std::string> hello(new std::string("Hello"));
return hello;
}
auto hello = getStr();
I am thinking maybe an rvalue reference is better but I'd like a second opinion first before I use it. Which is better?
Also is it recommended that fields in a class be rvalue references if they won't be set using the constructor? Example:
class StringHolder{
public:
std::string &&str;
};
StringHolder sh;
sh.str = getStr();
Thank you guys very much!