Mutare semantică

Move semantics este un  nume colectiv pentru instrumentele specializate ale limbajului de programare C++ care sunt concepute pentru a muta datele în timpul inițializării și pentru a construi noi obiecte, ceea ce reduce costurile de copiere. Pentru a implementa semantica de mutare, sintaxa C++ a introdus referințe rvalue , precum și constructori de mutare și operatorul de atribuire a mutarii [1] .

Apariția semanticii mutarii în standardul limbajului C++ a avut loc odată cu lansarea standardului C++11 actualizat ; a fost dictată de nevoia de optimizare a costurilor de calcul acolo unde a fost aplicată anterior semantica pass-by-value [2] .

Introducerea semanticii mișcării datelor în standardul limbajului a fost foarte apreciată de comunitatea dezvoltatorilor datorită faptului că oferă oportunități ample de optimizare a codului intern al apelurilor de funcții și al metodelor de clasă. Această optimizare se realizează prin necopiarea datelor atunci când se creează obiecte temporare care nu trebuie să-și salveze resursele interne pentru utilizare ulterioară [3] .

Apariția semanticii mișcării în standard a necesitat formalizarea derivării argumentelor de tipuri parametrizate (șabloane) și utilizarea lor, în legătură cu care a apărut reglementarea transmisiei directe [4] , iar „ regula celor trei ” a evoluat în „ regula de cinci”: acum, la gestionarea memoriei, pe lângă constructorul de copiere, destructorul și operatorul de atribuire a copiei, dezvoltatorul trebuie să definească un constructor de mutare și un operator de atribuire a mișcării [5] . Compilatorului i se permite să le invoce automat atunci când argumentele lor se potrivesc cu definiția unei valori r [6] .

Note

  1. Pai, Abraham, 2018 , Move Semantics, p. cincizeci.
  2. Sehr, Andrist, 2018 , Move semantics explicat.
  3. Vandewoerd, 2018 , Mutare semantică și enable_if<>, p. 125.
  4. Vandewoerd, 2018 , Variable Argument Template Applications, p. 95.
  5. Sehr, Andrist, 2018 , Introducing move semantics.
  6. Sehr, Andrist, 2018 , Variabile numite și valori-r.

Surse