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