当字符串文字作为const字符串传递时会发生什么?一个功能?

时间:2016-01-10 15:34:47

标签: c++ string

以下是 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"

1 个答案:

答案 0 :(得分:3)

  

"abcde"是否会初始化临时字符串,然后传递给count()

是的,那就是那里发生的事情。

使用implicit constructor (5)

构建std::string的临时实例
 basic_string( const CharT* s,
               const Allocator& alloc = Allocator() );

并作为对该函数的右值引用传递。

至于你的第二个样本,这也适用于const引用:

const std::string& s = "abcde";

<子> see demo

该点是左值参考不能从右值初始化。