簡體   English   中英

C ++ 11移動構造函數和賦值運算符

[英]C++11 move constructor and assignment operator

關於移動語義的隱式用法的一個相對簡單的問題,

當我們有

A func();

以下代碼:

A a;

a = func();

將調用A的默認構造函數,然后調用A的復制構造函數來創建/返回臨時,然后復制賦值運算符將其分配給對象a。

如果已經為A定義了移動構造函數和移動賦值,那么在最后一個語句中實際調用什么來創建臨時/ rvalue? 是復制構造函數后跟移動賦值嗎?

使用move-constructor創建臨時文件,如果有,則返回值可以視為右值 ,否則為copy-constructor。 如果該函數適用於返回值優化,則可能會省略此操作。

如果有移動賦值運算符,則使用移動賦值運算符分配給a ,否則為復制賦值運算符。 這是因為臨時是一個右值

暫無
暫無

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

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