Следующий код работает нормально, но почему это правильный код? Почему указатель 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() );