无名char []到std :: string&参考

时间:2014-01-25 17:11:38

标签: c++ string pointers char

是否可以将无名char[]传递给std::string&参数?

#include <string>

void func(std::string&);

int main()
{
  func("nameless");
  return 0;
}

1 个答案:

答案 0 :(得分:6)

在您的示例中不正常,因为您使用非const左值引用。将使用字符串文字构建临时字符串,临时字符串只能绑定到const左值引用或rvalue引用。

这些可行:

void func(const std::string&);
void func(std::string&&);

注意:某些编译器(值得注意的VS)会接受您的代码,因为它们允许将非const左值引用绑定到temporaries作为“扩展”。但这不是标准的C ++,所以如果你想编写可移植的代码,你应该避免它。此外,使用它意味着您必须向供应商了解语义是什么。