using namespace std;
string f() { return "abc"; }
void g() {
const string& s = f();
do_something_with_string(s);//is s valid at this point? yes!
}
///////////////////////////////////
using namespace std;
string f() { return "abc"; }
void g() {
string& s = f();
do_something_with_string(s);//is s valid at this point? No!
}
В обычном случае временный обьект живет до конца выражения в котором он был обьявлен. Однако константная ссылка на временный обьект является исключением, и сделано это не случайно... В случае константной ссылки на временный обьект его время жизни продливается на время жизни константного обьекта.
Комментариев нет:
Отправить комментарий