std::stringを戻す関数でchar *が戻せるのは何故ですか?