Pour savoir ce qu’est la sémantique du déplacement ?

la programmation


Salut, en fait, j’essaie de comprendre la sémantique du mouvement, mais je ne comprends pas la théorie dans la pratique. Un seul doute est de savoir comment la sémantique du déplacement déplace bcz dans le constructeur de déplacement en utilisant la fonction de déplacement, la théorie dit que transférer la propriété vers une autre ressource signifie que le constructeur de copie appellera correctement. Je ne sais pas comment déplacer Constructor fonctionne de toute façon, il doit copier correctement. Alors, aidez-moi à comprendre comment fonctionne la sémantique du déplacement et les informations sur l’adresse de l’objet après le constructeur de déplacement, veuillez décrire en profondeur.

Ce que j’ai essayé :

J’ai essayé de comprendre la sémantique du mouvement, mais j’avais quelques doutes.

Solution 1

Afin de comprendre la sémantique du déplacement, vous devez avant tout comprendre ce qu’est un objet temporaire. Autrement dit, tout objet créé à la volée puis est immédiatement supprimé :

C++
class A{/*assume it has functionality*/};

A a; // Solid object
A a1 = A(/* constructor parameter(s)*/); // Where as a1 is solid, the RValue assignment is a temporary objest which is when discarded triggers destructor semanticts

Donc, la sémantique de déplacement dit Déplacer A() dans a1, pas de copie comme si 2 objets occupaient temporairement la mémoire.

Cela peut fonctionner même sans la sémantique de déplacement, étant donné que le constructeur de copie et les assignations appropriés sont implémentés. Mais la sémantique de déplacement élimine les copies redondantes, par exemple si l’objet est de taille énorme.

コメント

タイトルとURLをコピーしました