Здравствуйте, TheAteist, Вы писали:
TA>TA>cout << myObject;
TA>
Это не встроенный оператор, а перегруженный.
Всего лишь инфиксная запись функции ostream& ::operator<<(ostream&, const T&)
либо функции-члена ostream& ostream::operator<<(const T&)
Встроенный << это оператор сдвига для целых чисел.
У функций бывают дефолтные аргументы, а у операторов нет.
У шаблонов функций можно указывать параметры явно: foo<int>(x) и-или выводить из типов аргументов, у шаблонов операторов параметры выводятся.
Оператор-член и оператор-свободная функция выглядят одинаково: cout << x. Естественно, что если оператор-член, то объект — это его левый аргумент.
У операторов немножко другой порядок поиска перегрузок (argument-dependent lookup), чем у функций. Об этом лучше у отцов-основателей почитать, у Саттера, кажется, было разжёвано.
Какие ещё свойства интересуют?