Da un po 'di tempo questo mi ha confuso. E finora non sono riuscito a trovare una risposta soddisfacente. La domanda è semplice. Quando viene chiamato un numero move assignment operator
e quando viene chiamato un numero move constructor operator
?Differenza tra l'operatore di assegnazione del movimento e il costruttore di movimento?
Gli esempi di codice su cppreference.com producono i seguenti risultati interessanti:
a2 = std::move(a1); // move-assignment from xvalue
A a2 = std::move(a1); // move-construct from xvalue
Così ha fare per con cui viene realizzato? E se sì, che viene eseguito se entrambi sono implementati? E perché c'è la possibilità di creare un sovraccarico dell'operatore di assegnazione del movimento, se è identico comunque.
"argomento della funzione di passaggio" è un caso particolare di "inizializzazione" e io sono sicuro cosa intendi per "funzione return". –
'return a;' non è mote-assignment –
@ M.M: per favore aiutami a capire questo come stampare 6 (da dentro fun() dichiarazione) è l'operatore di assegnazione del movimento chiamato. – novieq