Оператор вставки (<<) может использоваться в качестве функции-члена или функции-друга. </p>
оператор << используется в качестве функции-члена </strong>
ostream& operator<<(ostream& os);
Эта функция должна вызываться как:
dom << cout;
Как правило, если вы используете оператор в качестве функции-члена, левая часть оператора должна быть объектом. Затем этот объект неявно передается в качестве аргумента функции-члену. Но вызов сбивает с толку пользователя и выглядит не очень красиво.
оператор << используется в качестве функции друга </strong>
friend ostream& operator<<(ostream& os, const Domino& obj);
Эта функция должна вызываться как:
cout << dom;
В этом случае объект dom
явно передается как ссылка. Этот вызов более традиционный, и пользователь может легко понять смысл кода.