傳遞Constd:String&作為參數的日子結束了嗎?我最近聽了赫伯·薩特的一次演講,他提出了放棄的理由std::vector和std::string通過const &基本上都不見了。他建議,現在最好編寫如下這樣的函數:std::string do_something ( std::string inval ){
std::string return_val;
// ... do stuff ...
return return_val;}我知道return_val將是函數返回點處的一個rvalue,因此可以使用Move語義返回,這非常便宜。然而,inval仍然比引用的大小大得多(引用通常是作為指針實現的)。這是因為std::string具有各種組件,包括指向堆的指針和成員。char[]用于短字符串優化。因此,在我看來,通過參考仍然是一個好主意。有人能解釋赫伯為什么這么說嗎?
- 3 回答
- 0 關注
- 410 瀏覽
添加回答
舉報
0/150
提交
取消