将'const std :: string&'替换为'std :: string_view'或只是'std :: string'的好习惯吗?

时间:2019-11-29 01:45:13

标签: c++ string c++17 move-semantics string-view

当我需要玩const std::string &时,我总是更喜欢std::string。但是最近,我突然发现根本不需要使用const std::string &std::string_view对于只读字符串会更好,而仅std::stringmove会在其他方面(设置字符串字段等)更好。

// Read-only string example
bool foo(std::string_view bar) {
    return bar == "baz";
}
// Non read-only string example
void MyClass::foo(std::string bar) {
    this->baz = std::move(bar);
}

在以上两种情况下,const std::string &并不是最佳选择!

因此,我决定删除所有const std::string &,并用其中之一替换。所以我的问题是:

  1. 在任何情况下const std::string &会变得更好吗?
  2. 如果没有,我仍然需要const std::string &吗?

谢谢。

0 个答案:

没有答案