Как перегрузить оператор "," что бы он давал значение площади прямоугольника?
Есть объект класса , у меня есть длина и ширина прямоугольника. Как правильно написать перегрузку операции, что бы функция не принимала никаких аргументов. Но вовзращала значение площади. например, есть объект R. К ней я применяю оператор %R и у меня на выходе получается площадь
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы не имеете права превращать бинарный оператор в унарный. Поэтому выбирать можете только из унарных операторов (но не забывайте при этом, что ассоциативность и приоритет оператора остается тем же, что и у неперегруженного!).
Так что в вашем варианте, например:
class Rectangle {
...
int width, height;
...
int operator ~() const { return width*height; }
Так что можете писать S = ~R; :)
Но - еще и еще раз:
- Ассоциативность и приоритет использованного оператора не изменяется.
- Изменение семантики оператора всегда дурно пахнет. Использование оператора
~для вычисления площади, как сделал я - пример нехороший, потому что в оригинале семантика такого оператора - побитовое отрицание...