std::string const& foo()
{
return "Hello World";
}
/*
int main()
{
std::string str = foo(); // runtime error
}
*/
int main()
{
foo(); // ok
}
为什么'运行时错误'出现在这个代码示例中,但在其他可以解决返回const引用? 第一个主要是错误,但第二个是好的。
答案 0 :(得分:0)
您的函数foo
具有未定义的行为。它返回对本地创建的对象的引用,该对象在函数返回时被销毁。你的第二个主要是不没关系。它碰巧在你的情况下没有出现任何明显的可见错误,但它仍然是错误的。
答案 1 :(得分:0)
#include <windows.h>
#include <string>
using namespace std;
std::string const foo() {
std::string str = "Hello World";
return str;
}
int main() {
foo(); // ok
std::string str = foo(); // ok
}