次のコードは正常に機能しますが、なぜこの正しいコードなのですか?foo()によって返される一時の「c_str()」ポインタが有効なのはなぜですか?この一時的なものは、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() );