虽然重构了一些代码,但我遇到了一些返回std :: string的getter方法.像这样的东西例如:
class foo
{
private:
std::string name_;
public:
std::string name()
{
return name_;
}
};
Run Code Online (Sandbox Code Playgroud)
当然吸气者会更好地回归const std::string&?当前方法返回的副本效率不高.会返回一个const引用会导致任何问题吗?
可能重复:
访问者应该返回值还是常量引用?
首先,让我们忽略制定者和吸气者不是邪恶的.:)
我的问题是,如果我有一个std::容器作为成员的类,让我们说string,getter的返回类型应该是什么?我有点喜欢const T&相比,T性能方面的原因......我知道,大多数时候用户做一个拷贝反正,但我想不是所有的时间.我错了吗?
所以一般情况更好:
std::string get_name() const;
Run Code Online (Sandbox Code Playgroud)
要么
const std::string& get_name() const;
Run Code Online (Sandbox Code Playgroud)