Перегрузка операторов вне и внутри класса

В ТЗ моей работы указано, что перегрузка операторов должна выполняться как вне, так и внутри класса.

Я не совсем понимаю как это работает и хотел попросить Вашего совета. В моем понимании перегрузка оператора внутри класса - это:

class foo {
public:
  foo();
  foo operator + (foo arg);
}

Тогда как быть с выполнением вне класса..


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

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

У вас —

class foo{
public:
  foo();
  foo operator + (const foo& arg);
}

оператор объявлен в классе, как функция-член класса. Но его можно объявить и вне класса, как свободную функцию, просто записав его с двумя аргументами:

foo operator+(const foo& arg1, const foo& arg2) 
{
    ...
}
→ Ссылка