C ++ std auto_ptr

C ++ std auto_ptr
I puntatori sono quelli che vengono utilizzati per accedere alle risorse esterne al programma come la memoria heap. Quando dobbiamo accedere al mucchio di memoria, supponiamo che abbiamo un valore intero che viene memorizzato nel mucchio di memoria possiamo accedervi usando i puntatori. A volte a causa dell'incoscienza, i puntatori non vengono slogati e possono causare una perdita di memoria o può arrestare l'intero programma. Per prevenire questa situazione vengono utilizzati puntatori intelligenti, in questo meccanismo quando l'oggetto viene distrutto, anche la memoria viene liberata. Possono essere utilizzati più puntatori intelligenti ma, in questo tutorial, discuteremo del puntatore automatico.

Inoltre, il puntatore automatico è il puntatore intelligente. Prende un puntatore grezzo, lo avvolge e assicura che la memoria puntata dal puntatore grezzo venga rilasciata ogni volta che l'oggetto puntatore automatico esce dall'ambito, in qualsiasi momento un puntatore automatico può indicare un oggetto. Quindi, ogni volta che un puntatore automatico viene assegnato a un altro puntatore automatico, la proprietà viene trasferita all'istanza del puntatore automatico che ha ricevuto l'incarico. Lo stesso accadrà quando viene copiato un puntatore automatico.

I puntatori automatici sono uguali al puntatore unico o possiamo dire che il puntatore unico è la nuova versione del puntatore automatico. Quando l'oggetto viene dichiarato utilizzando il puntatore automatico, memorizzerà il puntatore in un singolo oggetto che garantisce che ogni volta che il puntatore esce dall'ambito, l'oggetto a cui punta verrà automaticamente distrutto.

Sintassi

La sintassi per dichiarare un puntatore automatico è mostrata di seguito:

std :: auto_ptr p (nuovo int);

Nella sintassi sopra "p" è l'oggetto puntatore automatico che abbiamo dichiarato dove il "tipo" è il tipo di dati che il puntatore P conterrà. E usando la nuova parola chiave, abbiamo assegnato il mucchio di memoria all'intero che vogliamo archiviare.

Esempio # 01:

Per comprendere il funzionamento del puntatore automatico in dettaglio, eseguiremo un esempio in cui dichiareremo un puntatore automatico e visualizzeremo la posizione della memoria a cui verrà referenziato. Ora, passiamo al nostro codice in cui l'intero processo verrà eseguito dalla creazione all'allocazione della memoria. Includeremo prima il nostro file di intestazione "iostream" e il secondo "memoria". "Iostream" è il pacchetto libreria che consente al programmatore di eseguire varie operazioni di input-output. Considerando che la libreria "memoria" è quella che prevede l'abilitazione dell'allocazione del mucchio di memoria. Al di fuori della funzione principale, abbiamo dichiarato due classi di oggetti. Il primo si chiama "AutoPointer" che verrà chiamato usando un puntatore automatico. All'interno dell'oggetto "AutoPointer", abbiamo creato una funzione pubblica denominata "show ()".

Lo scopo di utilizzare la parola chiave pubblica è di renderla accessibile per tutte le funzioni all'interno del codice. Nella nostra funzione show (), abbiamo visualizzato un messaggio di creazione del puntatore, ogni volta che il puntatore viene creato per l'oggetto "automatico" visualizzerà il messaggio. La seconda classe di oggetti si chiama "AutoPointer2" che abbiamo creato per il nostro secondo puntatore automatico a cui abbiamo anche superato l'istruzione "Cout" visualizzando il messaggio di "Second_Ptr Created".

Ora, spostandosi nella funzione principale che restituisce il tipo intero. Dichiariamo per la prima volta un puntatore automatico a un oggetto del tipo "AutoPointer" chiamato "First_Ptr". Utilizzando la nuova parola chiave, abbiamo assegnato l'heap di memoria all'oggetto "AutoPointer" nella riga successiva del nostro codice Abbiamo chiamato la funzione Show usando il puntatore "First_Ptr". In questo, abbiamo usato l'operatore freccia "->", in C ++ ci consente di accedere agli elementi dagli oggetti. Sono usati con le variabili del puntatore che indicano la classe oggetto. Quando la funzione Show viene chiamata utilizzando "First_Ptr", visualizzerà il messaggio "First_ptr creato", quindi utilizzando il metodo get () fornito per ottenere la posizione della memoria o i dati memorizzati in un heap di memoria. Ma nel nostro caso, otterremo l'indirizzo in cui è allocato il "primo_ptr".

Dopo aver visualizzato la posizione "First_PTR", creeremo un altro puntatore automatico chiamato "Second_ptr" del tipo di oggetto "AutoPointer2". Ancora una volta, usando il nuovo puntatore, abbiamo riservato la posizione della memoria per questo. Ora, passando alla riga successiva, stiamo usando la funzione "second_ptr" che abbiamo chiamato la funzione "show ()" che abbiamo creato per l'oggetto "automatico automatico". Una cosa da ricordare è quando dichiariamo un puntatore automatico per qualche oggetto, otterrà la funzione dell'oggetto di classe per il quale abbiamo creato il puntatore. Non avrà la funzione dell'altra classe di oggetti se stanno avendo gli stessi nomi. Come nel nostro caso in entrambe le classi di oggetti, abbiamo creato le stesse funzioni denominate "show ()". Successivamente, usando il metodo get (), abbiamo acceduto al heap di memoria usando il "secondo_ptr" in cui viene memorizzato il secondo puntatore "second_ptr". Alla fine del codice, abbiamo restituito il valore null, il che significa che il programma verrà eseguito correttamente senza avere alcun errore e eseguirà l'attività desiderata per il quale è destinato a.

#includere
#includere
Utilizzo dello spazio dei nomi std;
class autopointer
pubblico:
void show () cout<< "first_Ptr created" <;
class autopointer2
pubblico:
void show () cout<< "second_Ptr created" <;
int main ()

auto_ptrfirst_ptr (nuovo automatico);
first_ptr-> show ();
cout<Auto_PTRSECOND_PTR (new AutoPointer2);
second_ptr-> show ();
cout<restituzione 0;

Ora, controlliamo l'output che abbiamo ottenuto a seguito del codice che abbiamo scritto che viene visualizzato nello snippet sopra. Come possiamo vedere in questo output, abbiamo visualizzato il messaggio della creazione di puntatore per entrambi i nostri puntatori automatici. La posizione della memoria per entrambi i puntatori è stata visualizzata senza alcun errore.

Conclusione

In questo tutorial, abbiamo dimostrato il comportamento interno del puntatore automatico. Il puntatore automatico è stato introdotto in C ++ 3. Usando esempi e scenari abbiamo spiegato brevemente per rendere facile capire il funzionamento e la metodologia di come viene utilizzato. I puntatori di auto sono deprecati a causa della loro proprietà. Ottiene la proprietà in un modo che due puntatori allo stesso tempo non possono avere lo stesso oggetto.