Какой используется тип возвращаемого значения в операторе преобразования?

Текст задания: Добавьте в класс Rational оператор приведения к double. Все операторы из предыдущих заданий отсутствуют и реализовывать их не нужно. Метод to_double можно использовать в этом задании.

struct Rational
{
    Rational(int numerator = 0, int denominator = 1);

    void add(Rational rational);
    void sub(Rational rational);
    void mul(Rational rational);
    void div(Rational rational);

    void neg();
    void inv();
    double to_double() const;
    
    operator double() const
    {
        return to_double();
    }

private:
    int numerator_;
    int denominator_;
};


Перегрузил оператор double(). Не пойму одной вещи: почему мы не используем здесь возвращаемое значение?
Не знаю таких тонкостей, но как мы можем что-то возвращать (в данном случае return to_double()), но при этом не указывать возвращаемое значение?
При попытке указать возвращаемое значение double выдает ошибку, указывая на слово const.
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Это называется оператором преобразования (conversion operator).
Именем такого оператора должен быть явно определенный полный тип, определяющий тип возвращаемого значения оператора.
Соответственно, тип возвращаемого значения опускается (его нельзя указать) т.к. избыточен и будет дублировать имя оператора.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы