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