Оператор присваивания может быть перегружен с помощью функции-члена, но не функции-члена friend
:
class Test
{
int a;
public:
Test(int x)
:a(x)
{}
friend Test& operator=(Test &obj1, Test &obj2);
};
Test& operator=(Test &obj1, Test &obj2)//Not implemented fully. just for test.
{
return obj1;
}
Это вызывает эту ошибку:
ошибка C2801: 'operator =' должен быть нестатическим членом
Почему нельзя использовать функцию friend
для перегрузки оператора присваивания? Компилятор позволяет перегружать другие операторы, такие как + =
и - =
, используя friend
. Какая внутренняя проблема / ограничение при поддержке operator =
?