-1
std::string const& foo()
{
    return "Hello World";
}

/*
int main()
{
    std::string str = foo(); // runtime error
}
*/


int main()
{
    foo(); // ok
}

为什么在此代码示例中出现“运行时错误”,但在其他代码示例中可以处理返回 const 引用?第一个主要是错误,但第二个是好的。

4

2 回答 2

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

}
于 2013-04-28T04:02:12.610 回答
0

您的函数foo具有未定义的行为。它返回对本地创建的对象的引用,该对象在函数返回时被销毁。你的第二个主线不行。在您的情况下,它碰巧没有表现出任何明显的可见错误,但它仍然是错误的。

于 2013-04-28T03:39:44.667 回答