Obsah:

Ktorý operátor sa používa na dynamickú alokáciu objektu triedy v C ++?
Ktorý operátor sa používa na dynamickú alokáciu objektu triedy v C ++?

Video: Ktorý operátor sa používa na dynamickú alokáciu objektu triedy v C ++?

Video: Ktorý operátor sa používa na dynamickú alokáciu objektu triedy v C ++?
Video: Полный курс по Next js - Изучи Nextjs за 2 часа! | React SSR +таймкоды 2024, Apríl
Anonim

C++ podporuje dynamický alokácia a dealokácia predmety pomocou nového a vymazania operátorov . Títo prevádzkovatelia prideľujú pamäť pre predmety z bazéna nazývaného bezplatný obchod. Nové operátor volá špeciálnu funkciu operátor nové a odstránenie operátor volá špeciálnu funkciu operátor vymazať.

Ako týmto spôsobom dynamicky alokujete pole objektov v C++?

Poznámky C++: Dynamická alokácia polí

  1. Problémy s poliami s pevnou veľkosťou. Deklarovanie poľa s pevnou veľkosťou ako.
  2. Pole deklarujte ako ukazovateľ, prideľte pomocou nového. Ak chcete vytvoriť premennú, ktorá bude ukazovať na dynamicky pridelené pole, deklarujte ju ako ukazovateľ na typ prvku.
  3. Prideľte pole pomocou kódu>nové.
  4. Uvoľnenie pamäte odstránením.
  5. Príklady.

Okrem toho, ako dynamicky alokujete a uvoľníte pamäť v C++? C na to používa funkcie malloc() a calloc(). dynamicky alokovať pamäť za behu a na uvoľnenie používa funkciu free(). dynamicky pridelené Pamäť . C++ podporuje tieto funkcie a má tiež dvoch operátorov new a delete, ktorí plnia úlohu prideľovanie a uvoľnenie Pamäť lepším a jednoduchším spôsobom.

Podobne sa možno pýtať, ako vytvoríte triedu C++, ktorej objekty možno prideľovať iba dynamicky?

  1. Nedá sa to urobiť. Jediná vec, ktorú môžete urobiť, je nastaviť konštruktor ako súkromný a mať statickú továreň, ktorá vytvorí novú inštanciu triedy. –
  2. Vytvorenie takejto triedy je určite problém.
  3. To je veľmi zvláštna požiadavka.

Ako obmedzím dynamickú alokáciu objektu v C++?

Na základe zásobníka predmety sú implicitne riadené C++ kompilátor. Sú zničené, keď sa dostanú mimo rozsah a dynamicky prideľované objekty musí byť uvoľnené manuálne, inak pomocou operátora delete Pamäť dochádza k úniku. C++ nepodporuje prístup automatického zhromažďovania odpadu, ktorý používajú jazyky ako Java a C#.