c – 传递一个const char而不是std :: string作为函数参数

c – 传递一个const char而不是std :: string作为函数参数,第1张

概述这是一个新手问题,但我不明白它是如何工作的. 假设我有如下的功能 void foo(const std::string& v) { cout << v << endl;} 并在我的程序下面的电话. foo("hi!"); 本质上,我将const char *传递给一个函数参数,该引用是对字符串的引用,所以我对此调用有疑问. 为了通过引用传递参数,我可以说变量必须至少存在于调用的持续时间吗 这是一个新手问题,但我不明白它是如何工作的.

假设我有如下的功能

voID foo(const std::string& v) {    cout << v << endl;}

并在我的程序下面的电话.

foo("hi!");

本质上,我将const char *传递给一个函数参数,该引用是对字符串的引用,所以我对此调用有疑问.

为了通过引用传递参数,我可以说变量必须至少存在于调用的持续时间吗?如果是这样,在哪里创建传递给函数的字符串?

我可以看到它有效:它是否发生,因为编译器会创建传递给参数或函数的临时字符串?

解决方法

does it happen because the compiler creates a temporary string that is passed to the argument or the function?

是的,临时表可以绑定到const lvalue引用.临时字符串v在函数调用期间仍然存在.

请注意,这是可能的,因为std :: string具有带有const char *参数的隐式转换构造函数.这是同样的构造函数,使得这样做成为可能:

std::string s = "foo";
总结

以上是内存溢出为你收集整理的c – 传递一个const char而不是std :: string作为函数参数全部内容,希望文章能够帮你解决c – 传递一个const char而不是std :: string作为函数参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存