c++ - 字符串作为引用参数

标签 c++ arguments

我刚开始接触 C++,但我不确定一件事...

这段代码是没问题还是有问题?

void foo(const std::string& data)
{
    std::cout << data << std::endl;
}

foo("Hello World");

我真的不确定,但我认为当调用函数 foo 时,将创建临时字符串变量,然后它的引用将作为参数传递,然后这个临时变量被销毁.所以函数 foo 将尝试访问已删除的内存,这是未定义的行为。我说得对吗?

谢谢

最佳答案

临时对象的生命周期通常会一直持续到它出现的完整表达式的末尾,通常是一个分号。

需要临时字符串的完整表达式是 foo("Hello World"),因此临时字符串在函数调用的整个过程中都存在,一切正常。

关于c++ - 字符串作为引用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34064148/

相关文章:

callback - AutoIt _Timer_SetTimer - 附加回调参数

excel - Office Excel平均函数: what's the difference between AVERAGE(A2:C2 B1:B10) and AVERAGE(A2:C2, B1 :B10)?

c++ - HLSL 在代码中获取线程组数和线程数

c++ - C++中内部链接的实际应用

c++ - 如何在运行时在 C++ 中向对象添加新属性?

linux - Bash,每次输入无法识别的参数时在终端中打印 0

c - 将参数传递给 _beginthread()——怎么了?

c++ - 如何将元组扩展为可变参数模板函数的参数?

c++ - 在 Windows 环境中使用 C++ 进行 GUI 开发

c++ - 为什么 65537 不使用 CryptoPP 将 base64URL 编码为 "AQAB"?