Как оператор преобразования возвращает значение?

Для класса A целочисленный оператор преобразования будет выглядеть примерно так:

operator int() //Here we don't specify any return type
{
    return intValue;
}

Как приведенная выше функция может вернуть значение, когда его тип возвращаемого значения не указан? Кажется, он ничего не возвращает "ничего", но я знаю, что это не void.

Как это имеет смысл, если тип возврата не указан?

Ответ 1

Возвращаемый тип operator T() всегда T. Это особый случай С++.

Он не использует синтаксис прототипа стандартных функций T foo(), потому что 2 функции с тем же именем, отличающиеся только типом возврата, не могут сосуществовать (например, int foo() конфликты с double foo()). Если этот синтаксис используется, вы можете определить только 1 перегрузку оператора преобразования, что нежелательно.

Ответ 2

Возвращаемое значение operator T(), где T является типом, всегда T.

Ответ 3

Название оператора преобразования - его тип. Если это не так, вы можете определить оператор преобразования int (например), который фактически возвращает double. Несколько аналогичная линия мышления относится к конструкторам, которые также не имеют типа возврата.