ется произвольным значением. К

Автор admin Воскресенье, 24 мая 2009 11:32

ется произвольным значением. К сожалению, это значение не может передаваться при вызове, поскольку унарные предикаты (к числу которых относится наша функция gtl5()) применяются к каждому элементу интервала по отдельности и получают только один параметр. Как обычно, выход из положения основан на создании абстракции. Здесь нужна абстракция, которая бы работала, как функция, хранила информацию состояния и вызывалась с нужным количеством параметров. Такая абстракция называется объектом функции2. Объект функции представляет собой экземпляр класса с перегруженным оператором вызова функции (). Этот оператор позволяет использовать объект в традиционном синтаксисе вызова функции. Как и любой другой объект, объект функции инициализируется конструкторами. Ниже приведен объект функции, который может использоваться вместо gtl5(): //: C06:GreaterThanN.cpp #include using namespace std: class gt_n { int value; public: gt_n(int val) : value(val) {} bool operator()(int n) { return n > value: } }: int mainO { gt_n f(4): cout « f(3) « endl; // Выводит 0 (для false) cout « f(5) « endl; // Выводит 1 (для true)


Комментарии закрыты.