c – 传递一个const char而不是std :: string作为函数参数
发布时间:2020-12-16 03:11:45 所属栏目:百科 来源:网络整理
导读:这是一个新手问题,但我不明白它是如何工作的. 假设我有如下的功能 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 *传递给一个函数参数,该引用是对字符串的引用,所以我对此调用有疑问. 为了通过引用传递参数,我可以说变量必须至少存在于调用的持续时间吗?如果是这样,在哪里创建传递给函数的字符串? 我可以看到它有效:它是否发生,因为编译器会创建传递给参数或函数的临时字符串? 解决方法
是的,临时表可以绑定到const lvalue引用.临时字符串v在函数调用期间仍然存在. 请注意,这是可能的,因为std :: string具有带有const char *参数的隐式转换构造函数.这是同样的构造函数,使得这样做成为可能: std::string s = "foo"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |