は、この二つの機能を見てみましょう:const参照がない場合、一時オブジェクトは削除されますか?
std::string get_string()
{
std::string ret_value;
// Calculate ret_value ...
return ret_value;
}
void process_c_string(const char* s)
{
std::cout << s << endl;
}
そして、ここではget_string
によって返された引数とprocess_c_string
2つの可能な呼び出しです。
get_string
の返されたオブジェクトへの参照のバインドなし。get_string
の返されたオブジェクトへの結合const参照するとprocess_c_string(get_string().c_str());
。
const std::string& tmp_str = get_string(); process_c_string(tmp_str.c_str());
私は第二の方法が有効であることを知っているが、最初のものについて、標準は、この場合について何を何を言うのでしょうか? get_string
によって返された一時オブジェクトは、が完了する前に削除されますか?const reference
が存在しないためですか?
注:両方のバージョンはMSVCでokです。