Re: "встроенные" операторы vs простая функция
От: Кодт Россия  
Дата: 27.05.10 22:50
Оценка:
Здравствуйте, TheAteist, Вы писали:

TA>
TA>cout << myObject;
TA>

Это не встроенный оператор, а перегруженный.
Всего лишь инфиксная запись функции ostream& ::operator<<(ostream&, const T&)
либо функции-члена ostream& ostream::operator<<(const T&)
Встроенный << это оператор сдвига для целых чисел.

У функций бывают дефолтные аргументы, а у операторов нет.
У шаблонов функций можно указывать параметры явно: foo<int>(x) и-или выводить из типов аргументов, у шаблонов операторов параметры выводятся.
Оператор-член и оператор-свободная функция выглядят одинаково: cout << x. Естественно, что если оператор-член, то объект — это его левый аргумент.
У операторов немножко другой порядок поиска перегрузок (argument-dependent lookup), чем у функций. Об этом лучше у отцов-основателей почитать, у Саттера, кажется, было разжёвано.

Какие ещё свойства интересуют?
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.