【发布时间】:2020-09-07 22:31:49
【问题描述】:
#include <iostream>
#include <string>
void foo(const std::string & s)
{
std::cout << s;
}
const char * text = "something";
int main()
{
foo( text );
}
我开始想知道这里发生了什么,因为gdb 报告s == ""。根据最近的(比如C++17)版本的标准应该发生什么?
通过https://godbolt.org/ 我可以看到一个std::string c-tor,所以也许一个是通过引用构造和传递的,然后在函数终止时销毁。
【问题讨论】:
-
“gdb 报告
s == ""”是什么意思?应该发生的事情是程序输出“某事”。如果您在调试器的幕后窥视,是否观察到任何特定的事情不在标准范围内。
标签: c++ constructor pass-by-reference implicit-conversion temporary-objects