Mozgásszemantika

A Move szemantics a speciális  C++ programozási nyelvi eszközök gyűjtőneve , amelyek az inicializálás során adatok mozgatására és új objektumok létrehozására szolgálnak, ami csökkenti a másolási költségeket. A mozgatási szemantika megvalósításához a C++ szintaxis bevezette az rvalue hivatkozásokat, valamint a mozgatási konstruktorokat és a mozgatási hozzárendelés operátort [1] .

A mozgatási szemantika megjelenése a C++ nyelvi szabványban a frissített C++11 szabvány kiadásával történt ; ezt a számítási költségek optimalizálásának igénye diktálta ott, ahol korábban alkalmazták a pass-by-value szemantikát [2] .

Az adatmozgási szemantika nyelvi szabványba való bevezetését a fejlesztői közösség nagyra értékelte, mivel ez bőséges lehetőséget kínál a függvényhívások és osztálymetódusok belső kódjának optimalizálására. Ezt az optimalizálást úgy érik el, hogy nem másolnak adatokat olyan ideiglenes objektumok létrehozásakor, amelyeknek nem kell menteni a belső erőforrásaikat a további felhasználáshoz [3] .

A mozgásszemantika szabványban való megjelenése megkövetelte a paraméterezett típusú argumentumok (sablonok) levezetésének és használatának formalizálását, amellyel kapcsolatban megjelent a közvetlen átviteli szabályozás [4] , és a „ három szabálya ” a „ ötös szabály”: most a memória kezelésekor a másoláskonstruktoron, destruktoron és másolás-hozzárendelés operátoron kívül a fejlesztőnek meg kell határoznia egy mozgatási konstruktort és egy áthelyezési hozzárendelés operátort is [5] . A fordító automatikusan meghívhatja őket, ha argumentumaik egyeznek egy rvalue [6] definíciójával .

Jegyzetek

  1. Pai, Abraham, 2018 , Move Semantics, p. ötven.
  2. Sehr, Andrist, 2018, Mozgásszemantika magyarázata.
  3. Vandewoerd, 2018 , Move szemantics and enable_if<>, p. 125.
  4. Vandewoerd, 2018 , Variable Argument Template Applications, p. 95.
  5. Sehr, Andrist, 2018 , Bemutatkozik a mozgásszemantika.
  6. Sehr, Andrist, 2018 , Elnevezett változók és r-értékek.

Források