Utilizzo di c ++ univoco_ptr

Utilizzo di c ++ univoco_ptr
I puntatori intelligenti vengono utilizzati per allocare la risorsa dinamicamente. Molti tipi di puntatori intelligenti sono usati in C ++ per vari scopi, come auto_ptr, univoco_ptr, E condiviso_ptr. Il puntatore Auto_PTR è deprecato nella nuova versione di C++. L'UNIVE_PTR viene utilizzato in sostituzione di Auto_Ptr. L'oggetto di questo puntatore può assumere la proprietà del puntatore. L'oggetto di questo puntatore possiede il puntatore in modo univoco e nessun altro puntatore può indicare l'oggetto. L'UNUCE_PTR elimina automaticamente gli oggetti. Questo puntatore gestisce quegli oggetti se gli oggetti vengono distrutti o il valore dell'oggetto viene modificato o la funzione reset () viene chiamata. Le caratteristiche di uniche_ptr e gli usi di questo puntatore sono discussi in questo tutorial.

Componenti principali:

Di seguito sono riportati due componenti principali dell'oggetto univoco_ptr:

UN. Puntatore memorizzato:

Viene utilizzato per gestire gli oggetti creati da un puntatore unico. Viene creato al momento della creazione di puntatore e può essere cambiato in modi diversi.

B. Deleter memorizzato:

Prende l'argomento del tipo di punta memorizzato che viene utilizzato per eliminare l'oggetto gestito. Viene anche creato al momento della creazione del puntatore e può essere cambiato in modi diversi.

Esempio 1: crea un oggetto puntatore di una classe con costruttore

Il modo per dichiarare gli oggetti unici puntatore di una classe e accedere al metodo della classe è usando gli oggetti come mostrato nell'esempio seguente. Una classe con un costruttore e un metodo pubblico è stata dichiarata nel codice. Il costruttore ha tre argomenti. Il primo puntatore unico è stato creato chiamando il costruttore con tre valori di argomento. IL Risultato() Il metodo è chiamato dall'oggetto puntatore che calcola la somma di tre valori di argomento del costruttore. Successivamente, il secondo oggetto puntatore unico viene creato senza chiamare il costruttore e il primo puntatore viene spostato al secondo puntatore. IL Risultato() Il metodo è chiamato dal secondo oggetto puntatore.

// Includi le librerie necessarie
#includere
#includere
UsingNamespace std;
// Definisci la classe
Classe Aggiunta
int numero1, numero2, numero3;
pubblico:
// dichiara il costruttore
Aggiunta (int a, int b, int c)

numero1 = a;
numero2 = b;
numero3 = c;

// dichiara metodo per calcolare la somma
int risultato ()

Numero di ritorno1 + Numero2 + Number3;

;
int main ()

// dichiara il primo puntatore
UNIDE_PTR POINTER1 (nuova aggiunta (45, 55, 30));
cout<<"The result of sum using the first pointer :"// dichiara il secondo puntatore
Puntatore univoco_PTR2;
// Sposta il primo puntatore al secondo puntatore
puntatore2 = move (puntatore1);
cout<<"The result of sum using the second pointer :"return0;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito il codice sopra. La somma di 45, 55 e 30 è 130 che è stata stampata per entrambi i suggerimenti.

Esempio 2: crea un oggetto puntatore di una classe con costruttore e distruttore

Il modo per dichiarare un oggetto puntatore unico di una classe con costruttore e distruttore è stato mostrato nell'esempio seguente. La classe contiene un costruttore con un argomento, un metodo pubblico chiamato Display () al valore della variabile di classe e un distruttore che stamperà un messaggio di distruzione prima di distruggere l'oggetto della classe. Il metodo Display () viene chiamato dopo aver creato l'oggetto puntatore univoco nel codice.

// Includi le librerie necessarie
#includere
#includere
UsingNamespace std;
// Definisci la classe
Cliente di classe

Nome stringa;
pubblico:
// dichiara il costruttore
Cliente (String N)

nome = n;
cout<<"The resource is allocated.\n";

// Dichiara il metodo per stampare il nome del cliente
vuoto display ()

cout<<"The name of the customer is: "<< name <<"\n";

// dichiara il distruttore
~ Cliente ()

cout<<"The resource is destroyed.\n";

;
int main ()

// Allocate l'oggetto risorsa di proprietà di univoco_ptr
univoco_ptrupointer new customer ("mir Abbas");
uPOInter-> display ();
return0;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito il codice sopra:

Esempio 3: controlla il puntatore dopo aver trasferito la proprietà

Il modo per controllare la proprietà del puntatore unico ha mostrato nell'esempio seguente creando due puntatori unici di una classe. Una classe con due variabili di stringa e un metodo pubblico è stata dichiarata nel codice. Il metodo book_details () della classe viene chiamato dopo aver creato il primo oggetto puntatore unico della classe. Successivamente, è stato creato il secondo oggetto puntatore unico e il primo puntatore è stato spostato al secondo puntatore che distrugge il primo puntatore. La proprietà di entrambi i suggerimenti dovrebbe essere controllata in seguito.

// Includi le librerie necessarie
#includere
#includere
UsingNamespace std;
// Definisci la classe
libro di classe
String title = "Il linguaggio di programmazione C ++";
String Author = "Bjarne Stroustrup";
pubblico:
// Dichiara il metodo per stampare i dettagli del libro
voidBook_details ()

cout<<"Book Name: "<< title <<"\n";
cout<<"Author Name: "<< author <<"\n";

;
int main ()

// dichiara il primo puntatore
univoco_ptr Pointer1 (nuovo libro ());
Pointer1-> book_details ();
// dichiara il secondo puntatore
Puntatore univoco_PTR2;
// Sposta il primo puntatore al secondo puntatore
puntatore2 = move (puntatore1);
// Controlla il primo puntatore
if (static_cast (puntatore1)) cout<<"The first poiner is not null\n";
Elsecout<<"The first poiner is null\n";
// Controlla il secondo puntatore
if (static_cast (puntatore2)) cout<<"The second poiner is not null\n";
Elsecout<<"The second poiner is null\n";
return0;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito il codice sopra. Secondo l'output, la proprietà del primo puntatore è stata rimossa e il messaggio, "Il primo puntatore è nullo"Ha stampato per il primo puntatore. La proprietà del secondo puntatore esiste e il messaggio, "Il primo puntatore non è nullo"Ha stampato per il secondo puntatore:

Conclusione:

Gli scopi dell'utilizzo di un puntatore unico nella programmazione C ++ sono stati descritti in questo tutorial usando più esempi. I modi per creare un puntatore unico, trasferire la proprietà del puntatore e controllare la proprietà attuale del puntatore sono stati spiegati qui per aiutare i lettori a conoscere correttamente l'uso del puntatore unico.