繁体   English   中英

当字符串文字作为const字符串传递给函数时会发生什么?

[英]What happens when a string literal passed as const string& to a function?

以下是C ++ Primer中的一个示例:函数count()声明为:

int count(const string & a, char b);

并呼吁:

count("abcde", 'a')

有用。 这里"abcde"是一个字符串文字,并作为const string &传递给count()

但同时这段代码

string & s="abcde";

之所以错,只是因为我们无法将string文字分配给string &

那么当"abcde"传递给count()什么? 是否有类似临时字符串的东西由"abcde"初始化然后传递给count()

是否有类似临时字符串的东西由"abcde"初始化然后传递给count()

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

使用隐式构造函数(5)构造std::string临时实例

 basic_string( const CharT* s,
               const Allocator& alloc = Allocator() );

并作为rvalue引用传递给函数。


至于你的第二个例子,这也适用于const引用:

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

看看演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM