Можно столкнуться с неоднозначностью (пример спер):
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>