这是一个新手问题,但我不理解它是如何工作的。
假设我有以下函数:
void foo(const std::string& v) {
cout << v << endl;
}
以下是我程序中的调用代码。
foo("hi!");
实质上,我将一个const char*
传递给一个对字符串进行const引用的函数参数,因此我对这个调用有疑问。
为了通过引用传递参数,我是否正确地说变量必须至少在调用期间存在?如果是这样,那么传递给函数的字符串在哪里创建?
我可以看到它起作用:这是因为编译器创建了一个临时的string
,它被传递给参数或函数吗?
std::string
。另一种方法是使用string_view/string_ref
,它可以同时保存const char*
和std::string
,而不需要进行复制(参考链接:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3849.html或者http://www.boost.org/doc/libs/1_55_0/libs/utility/doc/html/string_ref.html)。 - dalle