簡體   English   中英

為什么沒有復制構造函數的NRVO不起作用

[英]Why doesn't NRVO work without copy constructor

我正在閱讀《 Inside C ++ Object Model 》一書,發現以下內容:
在此處輸入圖片說明

據我所知,NRVO不會調用函數返回的類的副本構造函數。所以我不明白為什么“由於缺少副本構造函數,該程序的第一個版本沒有應用NRV優化... ”。

這個想法是,代碼應該對執行優化的編譯器和不執行優化的編譯器都起作用。 如果對象被復制,顯然必須定義復制構造函數並且可以訪問它。 這就是要求,即使對於那些可能不總是使用它的編譯器也是如此。

如評論中所述,C ++ 17將強制進行優化,然后可以放寬要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM