Как перегрузить оператор "," что бы он давал значение площади прямоугольника?

Есть объект класса , у меня есть длина и ширина прямоугольника. Как правильно написать перегрузку операции, что бы функция не принимала никаких аргументов. Но вовзращала значение площади. например, есть объект R. К ней я применяю оператор %R и у меня на выходе получается площадь


Ответы (1 шт):

Автор решения: Harry

Вы не имеете права превращать бинарный оператор в унарный. Поэтому выбирать можете только из унарных операторов (но не забывайте при этом, что ассоциативность и приоритет оператора остается тем же, что и у неперегруженного!).

Так что в вашем варианте, например:

class Rectangle {
...
int width, height;
...
int operator ~() const { return width*height; }

Так что можете писать S = ~R; :)

Но - еще и еще раз:

  1. Ассоциативность и приоритет использованного оператора не изменяется.
  2. Изменение семантики оператора всегда дурно пахнет. Использование оператора ~ для вычисления площади, как сделал я - пример нехороший, потому что в оригинале семантика такого оператора - побитовое отрицание...
→ Ссылка