我从主要是 C 和 Java 的背景中学习 C++,我很好奇在 C++ 中返回对象而不必复制对象的最佳方法是什么。据我了解,C++11 引入了右值引用 (&&) 来从临时变量中移动数据(与复制相反)。例子:
std::string getStr(){
return "Hello";
}
std::string &&hello = getStr();
我能想到的另一种方法是使用共享指针。
std::tr1::shared_ptr<std::string> getStr(){
std::tr1::shared_ptr<std::string> hello(new std::string("Hello"));
return hello;
}
auto hello = getStr();
我在想也许右值参考更好,但在我使用它之前我想先征求第二意见。哪个更好?
如果不使用构造函数设置类中的字段,是否也建议它们是右值引用?例子:
class StringHolder{
public:
std::string &&str;
};
StringHolder sh;
sh.str = getStr();
非常感谢你们!