![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Кто нибудь может мне разъяснить откуда берет less<int>( ) парметры? Речь идет о выделенной строке в примере приведенном ниже:
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Royan
Это предикат. Предикат является указателем на функцию, или объектом-функцией, т.е. объектом, в котором определен оператор вызова функции, то бишь operator(). Предикат может быть унарным или бинарным. У унарного предиката один аргумент, а у бинарного - два. Возвращаемым значением предиката(т.е. функцией или объектом-функцией) является значения истина или ложь. Вот еще такой примерчик приведу:
|
|||
|
||||
Yuri Burger |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.5.2004 Репутация: нет Всего: нет |
Имхо, operator() нужно константный сделать. |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Я только не понял одной вещи что такое с точки зрения языка объект функция? И чем тогда operator()() отличается от SomeMethod()? Поясню вопрос, пусть есть класс:
class B{ public: void SomeMethod(void){ //blah blah blah }; }; Я ж не могу вызвать SomeMethod не инстанциировав объект типа B, но выходит могу вызвать operator()() ![]() -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
Vyacheslav |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Алгоритм ничего не знает о твоем SomeMethod, зато знает, что должен быть оператор ()
Добавлено @ 09:33
Ты не можешь вызвать и оператор , не инстанцировав объкт Ты по всей видимости ,путаешь конструктор с вызвовом оператора ()
Здесь less<int>( ) - это вызов конструктора. Сравни c
Оператор () вызывается внутри sort. -------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |