Оператор *
Оператор * класса unique_ptr выполняет разыменование умного указателя и возвращает ссылку на объект, которым он управляет. Этот оператор позволяет получить прямой доступ к значению, хранящемуся по адресу, которым владеет unique_ptr. Оператор не принимает параметров и возвращает ссылку на тип, которым параметризован умный указатель. Использовать оператор * можно только в том случае, если unique_ptr не является пустым, иначе поведение программы будет неопределенным.
Синтаксис
*ptr
Пример
Давайте создадим умный указатель на число 42 и получим доступ к значению через оператор *:
#include <iostream>
#include <memory>
using namespace std;
int main()
{
unique_ptr<int> ptr = make_unique<int>(42);
cout << *ptr << endl;
return 0;
}
Результат выполнения кода:
42
Пример
Оператор * можно использовать для изменения значения, на которое указывает unique_ptr. Давайте изменим число на 100:
#include <iostream>
#include <memory>
using namespace std;
int main()
{
unique_ptr<int> ptr = make_unique<int>(42);
*ptr = 100;
cout << *ptr << endl;
return 0;
}
Результат выполнения кода:
100
Пример
Давайте создадим unique_ptr на строку и выведем ее длину, используя оператор * и метод length:
#include <iostream>
#include <memory>
#include <string>
using namespace std;
int main()
{
unique_ptr<string> ptr = make_unique<string>("abcde");
cout << (*ptr).length() << endl;
return 0;
}
Результат выполнения кода:
5
Смотрите также
-
класс
unique_ptr,
который представляет умный указатель с уникальным владением -
метод
get,
который возвращает сырой указатель -
метод
operator->,
который предоставляет доступ к членам объекта -
функция
make_unique,
которая создает объект и возвращает unique_ptr на него