| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Вопрос про STL'евский <functional> |
| Автор: Royan 24.8.2004, 20:42 | ||
Кто нибудь может мне разъяснить откуда берет less<int>( ) парметры? Речь идет о выделенной строке в примере приведенном ниже:
|
| Автор: bel_nikita 24.8.2004, 23:52 | ||
| Royan Это предикат. Предикат является указателем на функцию, или объектом-функцией, т.е. объектом, в котором определен оператор вызова функции, то бишь operator(). Предикат может быть унарным или бинарным. У унарного предиката один аргумент, а у бинарного - два. Возвращаемым значением предиката(т.е. функцией или объектом-функцией) является значения истина или ложь. Вот еще такой примерчик приведу:
|
| Автор: Yuri Burger 25.8.2004, 11:15 | ||
Имхо, operator() нужно константный сделать. |
| Автор: Royan 30.8.2004, 17:34 |
| Я только не понял одной вещи что такое с точки зрения языка объект функция? И чем тогда operator()() отличается от SomeMethod()? Поясню вопрос, пусть есть класс: class B{ public: void SomeMethod(void){ //blah blah blah }; }; Я ж не могу вызвать SomeMethod не инстанциировав объект типа B, но выходит могу вызвать operator()() |
| Автор: Vyacheslav 31.8.2004, 09:25 | ||||||
| Алгоритм ничего не знает о твоем SomeMethod, зато знает, что должен быть оператор () Добавлено @ 09:33
Ты не можешь вызвать и оператор , не инстанцировав объкт Ты по всей видимости ,путаешь конструктор с вызвовом оператора ()
Здесь less<int>( ) - это вызов конструктора. Сравни c
Оператор () вызывается внутри sort. |