Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2010, 22:09   #1
Andrey995
 
Регистрация: 28.07.2010
Сообщений: 4
По умолчанию operator() в С++

Разбираю кое-какую программу на С++ и не могу понять вот такой код, я имею ввиду строчку с operator (). Что это такое подскажите, пожалуйста?

Код:
class G {
private:
  unsigned short table[11265];  // g(x) = table[x*1K]/64K
public:
  int operator()(int x) const {  // Use fast table lookup
    if (x>=11265)
      return 65535;
    else if (x<=-11265)
      return 0;
    else if (x>=0)
      return table[x];
    else
      return 65535-table[-x];
  }
  G();
}

Последний раз редактировалось Stilet; 03.08.2010 в 09:08.
Andrey995 вне форума Ответить с цитированием
Старый 31.07.2010, 22:14   #2
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Цитата:
Сообщение от Andrey995 Посмотреть сообщение

Код:
class G {
private:
  unsigned short table[11265];  // g(x) = table[x*1K]/64K
public:
  int operator()(int x) const {  // Use fast table lookup
    if (x>=11265)
      return 65535;
    else if (x<=-11265)
      return 0;
    else if (x>=0)
      return table[x];
    else
      return 65535-table[-x];
  }
  G();
}
А можно ссылочку или исходник полностью, где вы подобное видели?
vasek123 вне форума Ответить с цитированием
Старый 31.07.2010, 23:10   #3
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию

если в том коде используется stl - то это обычное явление.
ну например попробуй скомпилировать такой код:
Код:
int main(void)
{
	cout<<G()(45455)<<endl;

	cin.get();
	return 0;
}
здесь как-раз вызывается operator()(int x)... фактически первая часть G() - вызывает констуктор по умолчанию, а вторая (int x) -может принимать различные аргументы...
да и если хочешь подробней узнать почитай книги по stl, там это хорошо объясняется.
ThisIzGame вне форума Ответить с цитированием
Старый 01.08.2010, 02:45   #4
Necrophobic
Новичок
Джуниор
 
Регистрация: 01.08.2010
Сообщений: 2
По умолчанию

operator() - означает перегрузку скобок очевидно... использование ее сродне использованию глобальных функций, с названием которое такое же как и у объекта которому она принадлежит, например вот совсем утрирована:
Код:
G obj;
int i=1;
obj(i);
ну и как сказали выше это повсеместно юзается в стл
Necrophobic вне форума Ответить с цитированием
Старый 01.08.2010, 03:26   #5
Andrey995
 
Регистрация: 28.07.2010
Сообщений: 4
По умолчанию

Спасибо, буду смотреть.

Я разбираю программу на С++ и пытаюсь ее перевести на C#. Застопорился вот на этом коде:

Код:
class G {
private:
  unsigned short table[11265];  // g(x) = table[x*1K]/64K
public:
  int operator()(int x) const {  // Use fast table lookup
    if (x>=11265)
      return 65535;
    else if (x<=-11265)
      return 0;
    else if (x>=0)
      return table[x];
    else
      return 65535-table[-x];
  }
  G();
} g;  // Global function object g.

// Init table
G::G() {
  for (int i=0; i<=11264; i+=64)  // Compute every 64'th point
    table[i]=min(65535, int(65536.0/(1+exp(-i/1024.0))));
  for (int i=0; i<=11200; i+=64)  // Interpolate
    for (int j=1; j<64; ++j)
      table[i+j]=table[i]+(((table[i+64]-table[i])*j)>>6);
}
Поэтому спрашивал про operator(). Не получается найти аналог в C#. Не подскажите, каким образом перевести?

Последний раз редактировалось Stilet; 03.08.2010 в 09:09.
Andrey995 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
operator++ prikolist Общие вопросы C/C++ 17 15.01.2013 16:17
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
operator<< Наташенька Общие вопросы C/C++ 6 08.06.2009 18:59
operator= для NULL Selebro Общие вопросы C/C++ 2 14.12.2008 16:29
Operator C++ EfiopianDIMON Общие вопросы C/C++ 1 13.12.2008 16:52