gpt4 book ai didi

c++ - 返回 std::string 作为 const 引用

转载 作者:可可西里 更新时间:2023-11-01 14:53:11 28 4
gpt4 key购买 nike

我对返回 std::string 作为 const 引用有疑问。

class sample
{
public:
std::string mString;
void Set(const std::string& s)
{
mString = s;
}
std::string Get()
{
return mString;
}
};

在 Set 函数中,我将 std::string 作为 const 引用传递,const 是因为它的值在函数内部没有改变。

而在Get函数中,其实我在这里很困惑。返回 std::string 作为值更有意义。但我不确定,通过将字符串作为 const 引用传递是否有任何优势。通过返回字符串作为引用会提高执行速度,我认为是这样,但我不确定。但是将它作为“常量”返回有什么好处吗?

最佳答案

决定如何从某种容器返回非平凡对象的问题实际上是非平凡的:

  • 如果您从中返回值的类对对象施加了任何类型的约束,则您不能返回非const 引用,因为它会失去强制执行其不变量的可能性。显然,仅当调用成员函数的对象也是非const 时,通过非const 引用返回对象才可行。
  • 公开一个对象的 const 引用可以避免不变量的问题,但仍然意味着相应类型的对象实际上作为实现细节保留在内部。
  • 按值返回对象可能会产生大量复制对象的成本。

如果你的类更进一步可行monitor您肯定希望按值返回对象,否则对象可能会在调用者有机会复制它之前发生变异。

基本上,没有一个选择是理想的。如有疑问,我会按值返回,除非已知该对象的复制成本很高,在这种情况下我可能const& 返回。

关于c++ - 返回 std::string 作为 const 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13507698/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com