Flyt semantik

Move semantics er et  fællesnavn for specialiserede C++ programmeringssprogværktøjer, der er designet til at flytte data under initialisering og konstruere nye objekter, hvilket reducerer kopieringsomkostningerne. For at implementere bevægelsessemantik introducerede C++-syntaksen rvalue- referencer, såvel som bevægelseskonstruktorer og bevægelsestildelingsoperatoren [ 1] .

Fremkomsten af ​​bevægelsessemantik i C++-sprogstandarden fandt sted med udgivelsen af ​​den opdaterede C++11 -standard ; det var dikteret af behovet for at optimere beregningsomkostninger, hvor pass-by-value semantik tidligere var blevet anvendt [2] .

Introduktionen af ​​databevægelsessemantik i sprogstandarden er blevet højt værdsat af udviklerfællesskabet på grund af det faktum, at det giver rig mulighed for at optimere den interne kode af funktionskald og klassemetoder. Denne optimering opnås ved ikke at kopiere data, når der oprettes midlertidige objekter, der ikke behøver at gemme deres interne ressourcer til videre brug [3] .

Forekomsten af ​​bevægelsessemantik i standarden krævede formalisering af udledningen af ​​argumenter af parametriserede typer (skabeloner) og deres brug, i forbindelse med hvilken den direkte transmissionsregulering [4] optrådte , og " reglen om tre " udviklede sig til " regel af fem”: nu, når du administrerer hukommelse, skal udvikleren ud over kopikonstruktøren, destruktoren og kopitildelingsoperatøren definere en flyttekonstruktør og en flyttetildelingsoperator [5] . Compileren har lov til automatisk at kalde dem, når deres argumenter matcher definitionen af ​​en rvalue [6] .

Noter

  1. Pai, Abraham, 2018 , Move Semantics, s. halvtreds.
  2. Sehr, Andrist, 2018 , Bevægelsesemantik forklaret.
  3. Vandewoerd, 2018 , Flyt semantik og enable_if<>, s. 125.
  4. Vandewoerd, 2018 , Variable Argument Template Applications, s. 95.
  5. Sehr, Andrist, 2018 , Introducing move semantics.
  6. Sehr, Andrist, 2018 , Navngivne variable og r-værdier.

Kilder