以下是 C ++ Primer 的示例:
函数bool
声明为:
count()
并致电:
int count(const string & a, char b);
有效。此处count("abcde", 'a')
是字符串文字,并作为"abcde"
传递给count()
。
但同时这段代码
const string &
错误只是因为我们无法将string & s="abcde";
字面值分配给string
。
那么string &
传递给"abcde"
时发生了什么?是否有类似临时字符串的内容由count()
初始化,然后传递给"abcde"
?
答案 0 :(得分:3)
"abcde"
是否会初始化临时字符串,然后传递给count()
?
是的,那就是那里发生的事情。
构建std::string
的临时实例
basic_string( const CharT* s,
const Allocator& alloc = Allocator() );
并作为对该函数的右值引用传递。
至于你的第二个样本,这也适用于const
引用:
const std::string& s = "abcde";
<子> see demo 子>
该点是左值参考不能从右值初始化。