Próbuję coś takiego:Czy operatorzy przypisania C++ mogą pełnić funkcje bezpłatne?
Foo & operator=(Foo & to, const Bar &from);
Ale ja dostaję ten błąd:
E2239 'operator =(Foo &, const Bar &)' must be a member function
istnieją ograniczenia, na których operatorzy mogą/nie mogą być określone jako wolne funkcji, a jeśli tak, , czemu?
Jakieś dalsze powody? Ma to sens dla operatora = bycia funkcją składową, w końcu jest to jedna z "trzech" funkcji kontrolujących kopiowanie (mianowicie konstruktor kopiowania, operator = i destruktor). Ale dlaczego dla innych? – zoujyjs
Operatorzy @ zoujyjs muszą mieć dostęp do wewnętrznych zmiennych członkowskich (prawdopodobnie prywatnych). Bezpłatne funkcje nie będą miały takiego dostępu. – iheanyi
@iheanyi Ale możemy zdefiniować darmową funkcję jako przyjaciel klasy –