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

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


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

このコード サンプルでは「実行時エラー」が発生するのに、他のコード サンプルでは return const 参照について機能するのはなぜですか? 最初のメインはエラーですが、2 番目は問題ありません。

4

2 に答える 2

0

関数fooには未定義の動作があります。関数が戻るときに破棄される、ローカルに作成されたオブジェクトへの参照を返しています。あなたの 2 番目のメインは大丈夫ではありません。あなたの場合、明らかな目に見えるエラーは発生しませんが、それでも間違っています。

于 2013-04-28T03:39:44.667 に答える
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 に答える