Hvordan Dynamisk tildele en array ved hjelp av klasse i C ++

Hvordan Dynamisk tildele en array ved hjelp av klasse i C ++


I grunnleggende C ++ programmering, variabler og arrayer er erklært av programmerer direkte i kode. Men når de bygger datastrukturer som dynamisk skalering arrays, må programmereren lære å dynamisk allokere minne under kjøring av kode. Arrays tildelt på denne måten har noen fordeler, for eksempel ikke-konstant lengde på erklæringen. Programmereren kan tildele matriser av skalare datatyper og brukeropprettede klasser identisk. Ved hjelp av pekere og søkeord bygget inn i standard bibliotek, gjør C ++ hukommelse tildeling og sletting grei.

Bruksanvisning

1 Lag en peker til datatype tabellen skal inneholde. For eksempel, for å skape dynamisk en rekke tall, må et heltall peker eksisterer for å referere til tabellen:

int * arr_ptr;

Pekeren "arr_ptr" vil nå tillate en programmerer å referere dyp minnet under utføring.

2 Bruk pekeren tildele minne. Den "nye" søkeord, som er spesifikk for C ++ bibliotek (og ikke tilgjengelig i standard C) hevder minnet under utførelse for bruk av ringer pekeren:

arr_ptr = new int [6];

Her griper den "nye" søkeord en blokk med seks heltall store deler av minnet. Men i motsetning til arrays erklært før kjøring, dynamiske matriser kan erklæres med variabel innspill:

int i = 6;

arr_ptr = new int [i];

Dette gjør at programmerer å lage matriser som kan endre størrelsen basert på behov heller enn forhåndsbestemt plass betegnelse.

3 Tildele en rekke brukeropprettede datatyper. Etter C ++ minnetildeling prosedyren, kan programmereren skape matriser av datatyper vises i separate klasser:

int i = 5;

newClass * class_ptr;

class_ptr = new newClass [i];

Pekeren "class_ptr" vil referere til en variabel av "newClass" datatype, mest sannsynlig er definert i en klasse beskrivelse i en annen fil.

4 Slett tabellen. Når en matrise er ikke lenger nødvendig (eller har blitt kopiert inn i en annen rekke, muligens under en skalering drift) programmerer bør sørge for å slette den. Allokert minne som ikke er slettet, men ikke lenger referert, kan ta opp verdifullt minne og over tid føre til at det som er kjent som en minnelekkasje.

int i = 5;

newClass * class_ptr;

class_ptr = new newClass [i];

slette class_ptr [];

Nå rekken refereres "class_ptr" vil bli slettet, og minnet frigjøres til andre formål.