私は、一時的に参照するconst
の参照を返す関数の宣言についていくらか混乱します。次のコードconst参照を返す
#include <string>
#include <iostream>
using namespace std;
const string& foo() {
return string("foo");
}
string bar() {
return string("bar");
}
int main() {
const string& f = foo();
const string& b = bar();
cout << b;
}
方法foo
とbar
の違いは何ですか?で
なぜfoo
が私にwarning: returning reference to local temporary object [-Wreturn-stack-address]
を与えるのですか?テンポラリのコピーはconst string& f = foo();
に作成されていませんか?
キーは、この場合、 'const'は存続期間を延長しないということです。 –