Посмотрите на ваши конструкторы
rectangle(int,int);
rectangle(rectangle &r);
Тот, который принимает два целых числа, а другой - другой прямоугольник. Таким образом, это означает, что для построения прямоугольника необходимо указать либо два целых числа, либо другой прямоугольник.
Теперь посмотрите на строку с ошибкой
rectangle temp;
Что здесь предусмотрено? Конечно, ничего, но у вас нет конструктора без аргументов, так что это ошибка компиляции.
Глядя на ваш код, лучшим решением будет это
rectangle temp(r1.l+l, r1.b+b);
return temp;
Теперь два целых числа
Кстати, ваш код показывает полное отсутствие информации о const
. Вы быстро столкнетесь с неприятностями, если не узнаете об этом.