Iva*_*ars -1 c++ string pointers char
是否可以通过参数将无名传递char[]给函数std::string&?
#include <string>
void func(std::string&);
int main()
{
func("nameless");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在您的示例中不正常,因为您使用非const左值引用.将使用字符串文字构建临时字符串,临时字符串只能绑定到const左值引用或rvalue引用.
这些将起作用:
void func(const std::string&);
void func(std::string&&);
Run Code Online (Sandbox Code Playgroud)
注意:一些编译器(值得注意的VS)会接受您的代码,因为它们允许将非const左值引用绑定到temporaries作为"扩展".但这不是标准的C++,所以如果你想编写可移植的代码,你应该避免它.此外,使用它意味着您必须向供应商了解语义是什么.