Оператор C ++ * «уже перегружен»?

Мой учитель C ++ считает, что оператор * в стандартном C ++ «уже перегружен», потому что он может означать косвенное обращение или умножение в зависимости от контекста. Он получил это из C ++ Primer Plus , в котором говорится:

Фактически, многие операторы C ++ (и C) уже перегружены. Например, оператор * при применении к адресу дает значение, хранящееся по этому адресу. Но применение * к двум числам дает произведение значений. C ++ использует количество и тип операндов, чтобы решить, какое действие предпринять. (стр. 502, 5-е изд.)

По крайней мере, еще один учебник говорит примерно то же самое. Насколько я могу судить, это неправда; unary * - это оператор, отличный от двоичного *, и механизм, с помощью которого компилятор устраняет их неоднозначность, не имеет ничего общего с перегрузкой оператора.

Кто прав?

9
задан Evan Harper 23 August 2011 в 13:53
поделиться