Я пытаюсь что-то вроде этого:Возможны ли операторы присваивания C++ свободными функциями?
Foo & operator=(Foo & to, const Bar &from);
Но я получаю эту ошибку:
E2239 'operator =(Foo &, const Bar &)' must be a member function
Существует ли ограничение, на которых операторы могут/не могут быть определены как свободные функции, и если да, , Зачем?
Другие причины для этого? Имеет смысл для оператора = быть функцией-членом, в конце концов, это одна из «трех» функций управления копиями (а именно, конструктор копирования, оператор = и деструктор). Но зачем другим? – zoujyjs
Операторы @zoujyjs должны иметь доступ к внутренним переменным-членам (возможно, частным). У бесплатных функций такой доступ не будет. – iheanyi
@iheanyi Но мы можем определить свободную функцию как друга класса –