Myślę, że poniższy kod może być użyty do tworzenia manipulatorów.Przeciążanie operatora dla manipulatorów
#include<iostream>
ostream & symbol(ostream & output)
{
return output << "\tRs";
}
działa poprawnie. Poniższe oświadczenie
cout << "Total amount: " << 567 << symbol;
daje wyświetlamy
Total amount: 567 Rs
Ale nie rozumiem, dlaczego to działa. Mam następujące informacje o przeciążanie operatora w C++.
tylko dotychczasowi operatorzy mogą być przeciążeni. Nie można utworzyć nowych operatorów. Ale symbol symbol nie jest istniejącym operatorem.
W rachunku (Cout < < „Całkowita ilość” < < symboli;), wydaje się, że < < jest przeciążenia operatora i symbolu jest zmienną/obiektu. Ale nie zadeklarowałem symbolu jako zmiennej/obiektu.
dlaczego są one za pomocą instrukcji return (wyjście powrót < < "\" TRS;) ?. Myślę (powrót "\" TRS;) lub (wyjście < < "\" TRS;) powinien działać (próbowałem ale nie działa :))
Właściwie nie wiem. jak działa powyższy kod. Czy jest ktoś, kto mógłby wyjaśnić działanie powyższego operatora przeciążającego?
masz na myśli, że istnieje predefiniowany operator 'przecięcia << (ostream &, ostream & (*) (ostream &))? – Vlad
'operator << (ostream i (* pf) (ostream &));' jest członkiem ['std :: ostream] (http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/) – Attila