Метод reset
Метод reset класса optional сбрасывает хранимое значение. После вызова этого метода объект optional становится пустым, то есть не содержит никакого значения. Если до вызова метод хранил какое-то значение, то оно уничтожается. Метод не принимает параметров и не возвращает результата.
Синтаксис
opt.reset()
Пример
Давайте создадим объект optional со значением 123 и проверим наличие значения до и после вызова метода reset:
#include <iostream>
#include <optional>
using namespace std;
int main()
{
optional<int> opt = 123;
if (opt.has_value()) {
cout << "Has value: " << opt.value() << endl;
} else {
cout << "No value" << endl;
}
opt.reset();
if (opt.has_value()) {
cout << "Has value: " << opt.value() << endl;
} else {
cout << "No value" << endl;
}
return 0;
}
Результат выполнения кода:
"Has value: 123"
"No value"
Пример
Давайте создадим пустой объект optional и вызовем метод reset. Это не приведет к ошибке, так как метод безопасно работает с пустыми объектами:
#include <iostream>
#include <optional>
using namespace std;
int main()
{
optional<string> opt;
cout << "Before reset: " << (opt.has_value() ? "has value" : "no value") << endl;
opt.reset();
cout << "After reset: " << (opt.has_value() ? "has value" : "no value") << endl;
return 0;
}
Результат выполнения кода:
"Before reset: no value"
"After reset: no value"