Основные компоненты:
Ниже представлены два основных компонента объекта unique_ptr:
A. Сохраненный указатель:
Он используется для управления объектами, созданными уникальным указателем. Он создается во время создания указателя, и его можно изменять по-разному.
Б. Сохраненное средство удаления:
Он принимает аргумент типа сохраненного указателя, который используется для удаления управляемого объекта. Он также создается во время создания указателя и может быть изменен разными способами.
Пример 1: Создание объекта указателя класса с помощью конструктора
Чтобы объявить уникальные объекты-указатели класса и получить доступ к методу класса, используйте эти объекты, как показано в следующем примере. В коде объявлен класс с конструктором и общедоступным методом. Конструктор имеет три аргумента. Первый уникальный указатель был создан путем вызова конструктора с тремя значениями аргументов. В Результат() Метод вызывается объектом-указателем, который вычисляет сумму трех значений аргументов конструктора. Затем создается второй объект уникального указателя без вызова конструктора, и первый указатель перемещается на второй указатель. В Результат() Метод вызывается вторым объектом-указателем.
//Включите необходимые библиотеки#включают
#включают
usingnamespace std;
//Определите класс
добавление класса{
int число1, число2, число3;
общественность:
//Объявить конструктор
Добавление(int a, int b, int c)
{
число1 = а;
число2 = b;
число3 = с;
}
//Объявите метод для вычислениясумма
int Результат()
{
возвращениечисло1 + число2 + число3;
}
};
int main()
{
//Объявить первый указатель
unique_ptr pointer1(новое дополнение(Четыре пять,55,30));
Стоимость<<'Результат суммы с использованием первого указателя:'<Результат() <<' п';
//Объявить второй указатель
unique_ptr pointer2;
//Переместите первый указатель ко второму указателю
указатель2 = переместить(указатель1);
Стоимость<<'Результат суммы с использованием второго указателя:'<Результат() <<' п';
return0;
}
Выход:
Следующий вывод появится после выполнения вышеуказанного кода. Сумма 45, 55 и 30 составляет 130, которые были напечатаны для обоих указателей.
Пример 2: Создание объекта указателя класса с помощью конструктора и деструктора
Способ объявления уникального объекта-указателя класса с конструктором и деструктором показан в следующем примере. Класс содержит конструктор с одним аргументом, открытый метод с именем Display () для значения переменной класса и деструктор, который напечатает сообщение об уничтожении перед уничтожением объекта класса. Метод Display () вызывается после создания уникального объекта-указателя в коде.
//Включите необходимые библиотеки#включают
#включают
usingnamespace std;
//Определите класс
класс Клиент
{
имя строки;
общественность:
//Объявить конструктор
Покупатель(строка n)
{
name = n;
Стоимость<<«Ресурс выделен. п';
}
//Объявить метод печати имени клиента
void Display()
{
Стоимость<<«Имя заказчика:»<<имя<<' п';
}
//Объявить деструктор
~ Клиент()
{
Стоимость<<«Ресурс уничтожен. п';
}
};
int main()
{
//Выделите объект Resource, которым владеет unique_ptr
unique_ptruPointer{новый покупатель('Мир Аббас') };
uPointer->Отображать();
return0;
}
Выход:
После выполнения вышеуказанного кода появится следующий вывод:
Пример 3: проверка указателя после передачи права собственности
Способ проверки принадлежности уникального указателя показан в следующем примере путем создания двух уникальных указателей класса. В коде объявлен класс с двумя строковыми переменными и общедоступный метод. Метод класса Book_details () вызывается после создания первого уникального объекта-указателя класса. Затем был создан второй объект уникального указателя, и первый указатель был перемещен на второй указатель, который уничтожает первый указатель. Право собственности на оба указателя следует проверить позже.
//Включите необходимые библиотеки#включают
#включают
usingnamespace std;
//Определите класс
учебник{
строка title ='Язык программирования C ++';
строка author ='Бьярне Страуструп';
общественность:
//Объявить метод печати сведений о книге
voidBook_details()
{
Стоимость<<'Название книги:'<<заглавие<<' п';
Стоимость<<'Имя автора: '<<автор<<' п';
}
};
int main()
{
//Объявить первый указатель
unique_ptr pointer1(новая книга());
указатель1->Book_details();
//Объявить второй указатель
unique_ptr pointer2;
//Переместите первый указатель ко второму указателю
указатель2 = переместить(указатель1);
//Проверить первый указатель
если (static_cast(указатель1))Стоимость<<'Первый указатель не равен нулю п';
elsecout<<'Первый указатель равен нулю п';
//Проверьте второй указатель
если (static_cast(указатель2))Стоимость<<'Второй указатель не равен нулю п';
elsecout<<'Второй указатель равен нулю п';
return0;
}
Выход:
Следующий вывод появится после выполнения вышеуказанного кода. Согласно выходным данным, право собственности на первый указатель было удалено, а сообщение Первый указатель нулевой напечатал для первого указателя. Право собственности на второй указатель существует, и сообщение, Первый указатель не равен нулю напечатал для второго указателя:
Заключение:
Цели использования уникального указателя в программировании на C ++ были описаны в этом руководстве с использованием нескольких примеров. Способы создания уникального указателя, передачи права собственности на указатель и проверки текущего владения указателем были объяснены здесь, чтобы помочь читателям правильно понять использование уникального указателя.