среда, 2 января 2008 г.

Разница между константной и неконстантной ссылкой.

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!

}



В обычном случае временный обьект живет до конца выражения в котором он был обьявлен. Однако константная ссылка на временный обьект является исключением, и сделано это не случайно... В случае константной ссылки на временный обьект его время жизни продливается на время жизни константного обьекта.

Комментариев нет: