#include <iostream>
using namespace std;
class A
{
string s;
public:
A(void) { }
A(const string& str) : s(str) { }
A(const A& a) : s(a.s) { }
~A(void) { }
ostream& operator<<(ostream& os) { os << s; return os; }
};
int main(void)
{
A a("Hello, World!\n");
cout << a;
}
ne mozze da se prevede, ali ako se operator<< napishe kao prijateljska funkcija, onda prethodni kod radi.
Takodje, ako se u main() umesto cout << a; stavi a.operator<<(cout), onda prethodni kod radi.
Zashto?