亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“想要速度”有多真實?傳遞價值”

“想要速度”有多真實?傳遞價值”

C++
肥皂起泡泡 2019-12-26 09:38:58
如果我錯了糾正我。說我有:struct X{    std::string mem_name;    X(std::string name)        : mem_name(std::move(name))     {}    ...};struct Y{    std::string mem_name;    Y(const std::string &name)        : mem_name(name)     {}    ...};在X的ctor中,name顯然是傳遞給任何參數的副本X,X調用的動作ctor std::string來初始化mem_name,對嗎?我們稱其為X *上的復制然后移動。兩種操作:COPY,MOVE。在Y的ctor中,name是const ref,這意味著沒有元素的實際副本,因為我們直接處理Y需要創建對象的地方傳遞的參數。但是,我們復制name到初始化mem_name的Y; 一種操作:COPY。因此,它肯定應該快很多(對我而言更可取)?在斯科特·邁耶(Scott Meyer)的GN13演講中(大約時間框架8:10和8:56),他談到了“想要速度?按值傳遞”,我想知道傳遞參數(或精確的字符串)是否存在性能差異或損失)并通過引用傳遞值“以提高速度?”我知道以下事實:按值傳遞參數可能會很昂貴,尤其是在處理大數據時。也許(顯然嗎?)他的談話中我缺少什么?
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

如果您真的不介意在API中公開非引用(應該是在內部表示您將要復制/分配給定對象的標志),則可以使用副本。


復制省略比移動要快,并且如果不能刪除(出于各種原因,例如從屬函數調用的調用鏈太長),則C ++可以保證移動語義。


分享編輯


查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關注
  • 452 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號