/ / Jakie jest znaczenie powrotu referencji w przeciążeniu operatora - c ++

Jakie jest znaczenie powrotu referencji w przeciążeniu operatora - c ++

Czy ktoś może wyjaśnić, dlaczego trzeba zwrócić referencję podczas przeciążania operatorów na przykład

friend std::ostream& operator<< (std::ostream& out, const std::string& str)

Odpowiedzi:

7 dla odpowiedzi № 1

Chodzi o "łańcuchowanie" pracy operatora, na przykładach takich jak to:

std::cout << "hello," << " world";

Jeśli pierwsze (po lewej) użycie operator<<() nie zwróciło referencji, nie byłoby obiektu, który by wymagał drugiego użycia operatora.


4 dla odpowiedzi nr 2

Jest to połączenie łańcuchowe operatora (jeśli zwróciszwskaźnik, musisz go usunąć) i nie zrobić potencjalnie ogromnej i kosztownej kopii obiektu (w przypadku, gdy zwrócisz wartość), jeśli jest to możliwe.


3 dla odpowiedzi nr 3

Ogólną zasadą, o której mówi Scott Meyers w Effective C ++, jest to, że w razie wątpliwości "rób jak ints wykonaj ". Na przykład operator = powinien zwrócić referencję, aby kod działał tak:

MyClass A, B, C;
A = B = C = 0;