Мой учитель C ++ считает, что оператор * в стандартном C ++ «уже перегружен», потому что он может означать косвенное обращение или умножение в зависимости от контекста. Он получил это из C ++ Primer Plus , в котором говорится:
Фактически, многие операторы C ++ (и C) уже перегружены. Например, оператор * при применении к адресу дает значение, хранящееся по этому адресу. Но применение * к двум числам дает произведение значений. C ++ использует количество и тип операндов, чтобы решить, какое действие предпринять. (стр. 502, 5-е изд.)
По крайней мере, еще один учебник говорит примерно то же самое. Насколько я могу судить, это неправда; unary * - это оператор, отличный от двоичного *, и механизм, с помощью которого компилятор устраняет их неоднозначность, не имеет ничего общего с перегрузкой оператора.
Кто прав?