Hlavné komponenty:
Dve hlavné súčasti objektu unique_ptr sú uvedené nižšie:
A. Uložený ukazovateľ:
Slúži na správu objektov vytvorených jedinečným ukazovateľom. Vytvára sa v čase vytvárania ukazovateľa a dá sa zmeniť rôznymi spôsobmi.
B. Uložený vymazávač:
Vyžaduje argument typu uloženého ukazovateľa, ktorý sa používa na odstránenie spravovaného objektu. Je tiež vytvorený v čase vytvárania ukazovateľa a môže byť zmenený rôznymi spôsobmi.
Príklad 1: Vytvorte objekt ukazovateľa triedy pomocou konštruktora
Spôsob, ako deklarovať jedinečné objekty ukazovateľa triedy a pristupovať k metóde triedy, je pomocou objektov, ako je znázornené v nasledujúcom príklade. V kóde bola deklarovaná trieda s konštruktorom a verejnou metódou. Konštruktor má tri argumenty. Prvý jedinečný ukazovateľ bol vytvorený zavolaním konštruktora s tromi hodnotami argumentov. The Výsledok () metódu nazýva objekt ukazovateľa, ktorý vypočítava súčet troch hodnôt argumentov konštruktora. Ďalej sa vytvorí druhý objekt unikátneho ukazovateľa bez volania konštruktora a prvý ukazovateľ sa presunie na druhý ukazovateľ. The Výsledok () metódu volá druhý ukazovateľ.
//Zahrňte potrebné knižnice#zahrnúť
#zahrnúť
usingnamespace std;
//Definujte triedu
trieda Doplnenie{
int cislo1, cislo2, cislo3;
verejnosť:
//Vyhlásiť konštruktéra
Dodatok(int a, int b, int c)
{
číslo1 = a;
číslo2 = b;
číslo3 = c;
}
//Deklarovať metódu výpočtusúčet
int Výsledok()
{
vrátiť sačíslo1 + číslo2 + číslo3;
}
};
int hlavné()
{
//Deklarujte prvý ukazovateľ
ukazovateľ unique_ptr1(nový prírastok(Štyria, piati,55,30));
náklady<<„Výsledok súčtu pomocou prvého ukazovateľa:“<Výsledok() <<' n';
//Deklarujte druhý ukazovateľ
unique_ptr pointer2;
//Presuňte prvý ukazovateľ na druhý
ukazovateľ2 = pohyb(ukazovateľ 1);
náklady<<„Výsledok súčtu pomocou druhého ukazovateľa:“<Výsledok() <<' n';
return0;
}
Výkon:
Po spustení vyššie uvedeného kódu sa zobrazí nasledujúci výstup. Súčet 45, 55 a 30 je 130, ktorý bol vytlačený pre oba ukazovatele.
Príklad 2: Vytvorte objekt ukazovateľa triedy pomocou príkazu Constructor a Destructor
Spôsob deklarácie jedinečného objektu ukazovateľa triedy pomocou konštruktora a deštruktora bol ukázaný v nasledujúcom príklade. Trieda obsahuje konštruktor s jedným argumentom, verejnú metódu s názvom Display () hodnoty premennej triedy a deštruktor, ktorý pred zničením objektu triedy vytlačí správu o zničení. Metóda Display () sa volá po vytvorení jedinečného objektu ukazovateľa v kóde.
//Zahrňte potrebné knižnice#zahrnúť
#zahrnúť
usingnamespace std;
//Definujte triedu
triedny zákazník
{
názov reťazca;
verejnosť:
//Vyhlásiť konštruktéra
Zákazník(reťazec n)
{
meno = n;
náklady<<„Zdroj je pridelený. n';
}
//Deklarujte spôsob vytlačenia mena zákazníka
prázdne zobrazenie()
{
náklady<<„Meno zákazníka je:“<<názov<<' n';
}
//Vyhlásiť ničiteľ
~ Zákazník()
{
náklady<<„Zdroj je zničený. n';
}
};
int hlavné()
{
//Prideľte objekt Resource, ktorý je vo vlastníctve unique_ptr
unique_ptruPointer{nový zákazník(„Mir Abbas“) };
uPointer->Displej();
return0;
}
Výkon:
Po spustení vyššie uvedeného kódu sa zobrazí nasledujúci výstup:
Príklad 3: Po prechode vlastníctva skontrolujte ukazovateľ
Spôsob kontroly vlastníctva jedinečného ukazovateľa ukázal v nasledujúcom príklade vytvorenie dvoch jedinečných ukazovateľov triedy. V kóde bola deklarovaná trieda s dvoma reťazcovými premennými a verejnou metódou. Metóda Book_details () triedy sa volá po vytvorení prvého objektu jedinečného ukazovateľa triedy. Ďalej bol vytvorený druhý objekt unikátneho ukazovateľa a prvý ukazovateľ bol presunutý na druhý ukazovateľ, ktorý ničí prvý ukazovateľ. Vlastníctvo oboch ukazovateľov by ste mali skontrolovať neskôr.
//Zahrňte potrebné knižnice#zahrnúť
#zahrnúť
usingnamespace std;
//Definujte triedu
triedna kniha{
názov reťazca =„Programovací jazyk C ++“;
autor reťazca =„Bjarne Stroustrup“;
verejnosť:
//Deklarovať spôsob tlače podrobností o knihe
voidBook_details()
{
náklady<<„Názov knihy:“<<titul<<' n';
náklady<<'Meno autora:'<<autor<<' n';
}
};
int hlavné()
{
//Deklarujte prvý ukazovateľ
ukazovateľ unique_ptr1(nová kniha());
ukazovateľ1->Book_details();
//Deklarujte druhý ukazovateľ
unique_ptr pointer2;
//Presuňte prvý ukazovateľ na druhý
ukazovateľ2 = pohyb(ukazovateľ 1);
//Skontrolujte prvý ukazovateľ
keby (static_cast(ukazovateľ 1))náklady<<„Prvý poiner nie je nulový n';
elsecout<<„Prvý poiner je nula n';
//Skontrolujte druhý ukazovateľ
keby (static_cast(ukazovateľ 2))náklady<<„Druhý poiner nie je nulový n';
elsecout<<„Druhý poiner je nulový n';
return0;
}
Výkon:
Po spustení vyššie uvedeného kódu sa zobrazí nasledujúci výstup. Podľa výstupu bolo vlastníctvo prvého ukazovateľa odstránené a správa, Prvý ukazovateľ je nulový vytlačil pre prvý ukazovateľ. Existuje vlastníctvo druhého ukazovateľa a správa, Prvý ukazovateľ nie je null vytlačil pre druhý ukazovateľ:
Záver:
Účely použitia jedinečného ukazovateľa v programovaní v C ++ boli popísané v tomto návode pomocou viacerých príkladov. Tu boli vysvetlené spôsoby, ako vytvoriť jedinečný ukazovateľ, previesť vlastníctvo ukazovateľa a skontrolovať aktuálne vlastníctvo ukazovateľa, aby čitateľom pomohli správne porozumieť používaniu jedinečného ukazovateľa.