Glavne komponente:
Dvije glavne komponente objekta unique_ptr dolje su navedene:
A. Pohranjeni pokazivač:
Koristi se za upravljanje objektima stvorenim jedinstvenim pokazivačem. Nastaje u vrijeme stvaranja pokazivača i može se mijenjati na različite načine.
B. Spremljeni brisač:
Uzima argument spremljene vrste pokazivača koji se koristi za brisanje upravljanog objekta. Također se stvara u vrijeme stvaranja pokazivača, a može se promijeniti na različite načine.
Primjer 1: Stvorite objekt pokazivača klase s konstruktorom
Način deklariranja jedinstvenih objekata pokazivača klase i pristupa metodi klase je upotreba objekata kako je prikazano u sljedećem primjeru. Klasa s konstruktorom i javnom metodom deklarirana je u kodu. Konstruktor ima tri argumenta. Prvi jedinstveni pokazivač kreiran je pozivanjem konstruktora s tri vrijednosti argumenta. The Proizlaziti() method poziva pokazivački objekt koji izračunava zbroj tri vrijednosti argumenta konstruktora. Zatim se stvara drugi jedinstveni objekt pokazivača bez pozivanja konstruktora, a prvi se pokazivač pomiče na drugi pokazivač. The Proizlaziti() metodu poziva drugi objekt pokazivača.
//Uključite potrebne knjižnice#uključi
#uključi
usingnamespace std;
//Definirajte klasu
razred Dodatak{
int broj1, broj2, broj3;
javnost:
//Deklarirajte konstruktor
Dodatak(int a, int b, int c)
{
broj1 = a;
broj2 = b;
broj3 = c;
}
//Navedite način izračunavanjaiznos
int Rezultat()
{
povratakbroj1 + broj2 + broj3;
}
};
int main()
{
//Deklarirajte prvi pokazivač
jedinstveni_ptr pokazivač1(novi dodatak(Četiri pet,55,30));
trošak<<'Rezultat zbroja pomoću prvog pokazivača:'<Proizlaziti() <<' n';
//Proglasite drugi pokazivač
jedinstveni_ptr pokazivač2;
//Pomaknite prvi pokazivač na drugi pokazivač
pokazivač2 = pomakni(pokazivač1);
trošak<<'Rezultat zbroja pomoću drugog pokazivača:'<Proizlaziti() <<' n';
return0;
}
Izlaz:
Sljedeći izlaz će se pojaviti nakon izvršavanja gornjeg koda. Zbroj 45, 55 i 30 je 130 koji je tiskan za oba pokazivača.
Primjer 2: Stvorite objekt pokazivača klase s konstruktorom i destruktorom
Način deklariranja jedinstvenog objekta pokazivača klase s konstruktorom i destruktorom prikazan je u sljedećem primjeru. Klasa sadrži konstruktor s jednim argumentom, javnu metodu s imenom Display () na vrijednost varijable klase i destruktor koji će ispisati poruku uništavanja prije uništavanja objekta klase. Metoda Display () poziva se nakon stvaranja jedinstvenog objekta pokazivača u kodu.
//Uključite potrebne knjižnice#uključi
#uključi
usingnamespace std;
//Definirajte klasu
klasa Kupac
{
naziv niza;
javnost:
//Deklarirajte konstruktor
Kupac(niz n)
{
ime = n;
trošak<<'Resurs je dodijeljen. n';
}
//Navedite način ispisa imena korisnika
prikaz praznine()
{
trošak<<'Ime kupca je:'<<Ime<<' n';
}
//Proglasite destruktor
~ Kupac()
{
trošak<<'Resurs je uništen. n';
}
};
int main()
{
//Dodijelite objekt Resource koji je u vlasništvu unique_ptr
unique_ptruPointer{novi kupac('Mir Abbas') };
uPointer->Prikaz();
return0;
}
Izlaz:
Nakon izvršavanja gornjeg koda pojavit će se sljedeći izlaz:
Primjer 3: Provjerite pokazivač nakon prijenosa vlasništva
Način provjere vlasništva nad jedinstvenim pokazivačem pokazao se u sljedećem primjeru stvaranjem dva jedinstvena pokazivača klase. U kodu je deklarirana klasa s dvije string varijable i javnom metodom. Metoda Book_details () klase poziva se nakon stvaranja prvog jedinstvenog objekta pokazivača klase. Zatim je kreiran drugi jedinstveni objekt pokazivača, a prvi pokazivač je premješten na drugi pokazivač koji uništava prvi pokazivač. Vlasništvo nad oba pokazivača trebalo bi provjeriti kasnije.
//Uključite potrebne knjižnice#uključi
#uključi
usingnamespace std;
//Definirajte klasu
razredna knjiga{
naslov niza ='Programski jezik C ++';
autor niza ='Bjarne Stroustrup';
javnost:
//Navedite način ispisa pojedinosti o knjizi
voidBook_details()
{
trošak<<'Naziv knjige:'<<titula<<' n';
trošak<<'Ime autora:'<<Autor<<' n';
}
};
int main()
{
//Deklarirajte prvi pokazivač
jedinstveni_ptr pokazivač1(nova Knjiga());
pokazivač1->Pojedinosti o knjizi();
//Proglasite drugi pokazivač
jedinstveni_ptr pokazivač2;
//Pomaknite prvi pokazivač na drugi pokazivač
pokazivač2 = pomakni(pokazivač1);
//Provjeri prvi pokazivač
ako (static_cast(pokazivač1))trošak<<'Prvi poiner nije ništavan n';
elsecout<<»Prvi poiner je ništavan n';
//Provjerite drugi pokazivač
ako (static_cast(pokazivač2))trošak<<'Drugi poiner nije ništavan n';
elsecout<<'Drugi poiner je ništavan n';
return0;
}
Izlaz:
Sljedeći izlaz će se pojaviti nakon izvršavanja gornjeg koda. Prema ispisu, vlasništvo nad prvim pokazivačem uklonjeno je, a poruka, Prvi pokazivač je null je tiskao za prvi pokazivač. Vlasništvo nad drugim pokazivačem postoji, a poruka, Prvi pokazivač nije null je ispisao za drugi pokazivač:
Zaključak:
Svrhe korištenja jedinstvenog pokazivača u programiranju na C ++ opisane su u ovom vodiču pomoću više primjera. Ovdje su objašnjeni načini stvaranja jedinstvenog pokazivača, prijenosa vlasništva pokazivača i provjere trenutnog vlasništva pokazivača kako bi se čitateljima pomoglo da pravilno znaju korištenje jedinstvenog pokazivača.