Время жизни временных файлов

Следующий код работает нормально, но почему это правильный код? Почему указатель c_str () временного объекта, возвращаемого foo (), действителен? Я думал, что это временное уже уничтожено, когда вводится bar (), но похоже, что это не так. Итак, теперь я предполагаю, что временное значение, возвращаемое foo (), будет уничтожено после вызова bar () - это правильно? И почему?

std::string foo() {
  std::string out = something...;
  return out;
}

void bar( const char* ccp ) {
  // do something with the string..
}

bar( foo().c_str() );
37
задан fredoverflow 18 November 2010 в 17:55
поделиться