Значение оператора перегрузки - () как свободной функции, а не функции-члена?

я читал C++ FAQ. Там я нашел пункт в руководстве по использованию перегрузки операторов:

Если вы предоставляете конструктивные операторы, они должны позволять продвигать левый операнд (по крайней мере, в случае, когда класс имеет однопараметрический ctor, который не является помечены явным ключевым словом). Например, если ваш класс Fraction поддерживает переход от int к Fraction (через неявный ctor Fraction::Fraction(int)), и если вы разрешаете x - y для двух объектов Fraction, вы должны также разрешить 42 - y. На практике это просто означает, что ваш operator-() не должен быть функцией-членом Fraction.Обычно вы сделаете его другом хотя бы для того, чтобы сделать его общедоступным: частью класса, но даже если он не друг, он не должен быть членом.

Почему он не автор написал, что оператор-() не должен быть функцией-членом?

Каковы будут плохие последствия, если я сделаю operator-() в качестве функции-члена, и каковы другие последствия?

9
задан Abhishek Gupta 9 June 2012 в 13:30
поделиться