Оператор преобразования — это специальная функция-член, которая позволяет неявно преобразовать объект класса в другой тип данных. Она дает возможность присвоить объект прямо переменной другого типа без явного приведения типа.
Оператор преобразования объявляется с ключевым словом operator, за которым следует целевой тип:
operator TargetType() const {
// логика преобразования
return converted_value;
}
Обрати внимание, что операторы преобразования не имеют указанного типа возврата в объявлении.
Когда ты присваиваешь объект переменной другого типа, компилятор автоматически вызывает оператор преобразования, если он существует:
class Boo {
double value;
public:
Boo(int i) { value = i; }
operator double() const {
return value;
}
};
Boo booObject;
double result = booObject; // оператор преобразования вызывается автоматически
В этом примере присвоение booObject переменной result запускает функцию operator double(), которая возвращает внутреннее значение double.
const, так как не изменяют объектИспользуй операторы преобразования с умом, потому что неявные преобразования иногда могут привести к неожиданному поведению. Рассмотри возможность сделать их explicit, чтобы требовать явного преобразования — эта возможность появилась в C++11.
Оператор преобразования должен явно указывать тип возврата в своём объявлении, например operator double() -> double().
Новый — ещё не проверен сообществом
Вы