Можно столкнуться с неоднозначностью (пример спер):
struct Tiny{
  Tiny(int){}
  operator int();
};
int operator+(Tiny, Tiny);
int main() {
  Tiny tiny(1);
  cout << tiny + 2;
}Компилятор негодует, он не знает то ли преобразовывать первое слагаемое в int (чтобы вызвать обычный operator+(int, int)), то ли второе в Tiny (operator+(Tiny, Tiny)).
Конечно еще существует вероятность случайного неявного преобразования.
Такой оператор следует определить только когда преобразование достаточно очевидно. Но, например, не следует добавлять operator double для вычисления длины вектора, сами же и запутаетесь.
 
 
 Сообщения
Сообщения
 
 

Комментариев нет:
Отправить комментарий
Можно использовать теги <b>, <i>