我们可以将字符*传递给常量字符串&吗?
Can we pass a char* to const string&?
以下代码在C++中可以接受吗?如果是,会发生什么?它是否创建一个临时字符串变量并传递其地址?
void f(const string& s) {
}
const char kJunk[] = "junk";
f(kJunk);
是的,可以接受。编译器将调用string(const char *)
构造函数,并创建一个临时构造函数,该构造函数将在调用期间绑定到s
。当下降到f
返回时,临时将被销毁。
作为字符数组的参数被隐式转换为std::string类型的临时对象,编译器将对该临时对象的const引用传递给函数。当带有函数调用的语句将完成其工作时,临时对象将被删除。
它是否创建一个临时字符串变量并传递其地址?
是的,它相当于:
void f(const std::string& s) {
}
const char kJunk[] = "junk";
f(std::string(kJunk));
相关文章:
- 将常量字符串添加到非常量字符串是否会给出常量字符串
- 将收到的 usart uint8_t* 数据与常量字符串进行比较
- 为什么文字不是常量(字符串除外)?
- public:静态常量字符串声明/初始化问题
- 如何打印出常量字符串的第一个元素?
- 为什么在类体中无法启动静态常量字符串成员
- 如何从常量字符串初始化 LPWSTR?
- 如何在 C++03 中没有重复代码的情况下在堆栈上创建一个非常量 C 字符串数组?
- 需要帮助理解' 字符串 ltrim(常量字符串 &) ' 的含义
- 从常量字符串到布尔值的隐式强制转换
- 比较字符和常量字符串
- C++ lambda 到 std::函数错误与非常量字符串
- 让每个常量字符串都被引用是好的做法吗?
- 外部常量字符串的链接错误
- 无法初始化静态常量字符串
- 如何更改静态链接库中常量字符串数组的Visual Studio C++初始化顺序
- 对已编译的可执行文件中的常量字符串(例如密码)进行加密
- C++ 构造函数中的常量字符串 &name 和字符串名称之间的差异
- 哪个是正确的:矢量<常量字符串>或常量矢量<string>?
- 为什么字符串在函数参数中作为常量字符串传递