Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Stason676
Заблокирован
#1

operator() - C++

20.01.2014, 19:09. Просмотров 421. Ответов 4
Метки нет (Все метки)

Здраваствуйте. Объясните пожалуйста смысл "opereator()" во всех случаях, что он делает, почему иногда впереди него ставится "&" "&operator()" и почему "opereator()" используется в функторах. Если можно по потробней или ссылку на полную информацию. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2014, 19:09     operator()
Посмотрите здесь:

Operator + - C++
Создайте в классе Circle оператор + для сложения объектов типа Circle. Необходимо складывать только величины радиусов itsRadius. ...

Operator= - C++
Добрый день. Имеется необходимость создать объект от родительского класса, а затем его наследнику присвоить объект другого типа. ...

operator >> - C++
// 1.h #ifndef STONEWT_H_ #define STONEWT_H_ using std::cout; using std::cin; using std::endl; class Stonewt { private: ...

operator - C++
Всем привет, опять непонятка в книге, дошел до оператора operator и ничего не понял, для чего он нужен, что он делает, то есть как он...

Operator>> - C++
Привет, всем!!! У меня следующая проблема: при использовании operator>> внутри цикла while, т.е while(operator >> variable), выполняется...

operator< - C++
bool operator&lt;(char c1,char c2) { //error C2803: 'operator &lt;' must have at least one formal parameter of class type if...

operator[] - C++
class A { public: A(){} prvate: int _m; }; Как перегрузить оператор , что бы можно было написать

operator= - C++
Такой вопрос. Есть объект. Хочу чтобы при присваивании его к чеслу выдавалось число. Например. class MyClass { short...

Operator* - C++
в этой программе мне надо умножить два числа a &amp; b ??? допустим в ob(2,5) перемножить 2 &amp; 5 #include&lt;iostream&gt; #include&lt;vector&gt; ...

operator++ - C++
Всем доброго времени суток. Вот сделал перегрузку оператора ++ TAvia TAvia::operator++() { TAvia temp; temp.year=this-&gt;year+1; ...

operator[] - C++
есть класс CItem, в качестве члена указан список CList&lt;CVariant&gt; data; как будет выглядеть operator класса CItem, чтобы данный код...

Operator*=(); - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace::std; class Distance //Класс английских длин { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
20.01.2014, 19:17     operator() #2
Цитата Сообщение от Stason676 Посмотреть сообщение
почему иногда впереди него ставится "&" "&operator()
смотря что нужно вернуть
Цитата Сообщение от Stason676 Посмотреть сообщение
и почему "opereator()" используется в функторах.
потому что можно делать так:
C++
1
2
type obj ;
obj() ; //<-- похоже на вызов функции? Отсюда и название функциональных объектов
MrGluck
Модератор
Эксперт CЭксперт С++
6972 / 4143 / 590
Регистрация: 29.11.2010
Сообщений: 10,994
20.01.2014, 19:33     operator() #3
Я советую к прочтению сей мануал
Stason676
Заблокирован
20.01.2014, 22:43  [ТС]     operator() #4
спасибо за ответы, вопрос такой, если функция operator() находится в классе, то при использование объекта этого класса он как бы вызывается как функция? есть статья как и по каким правилам происходит анализ исходных текстов в си++? Спасибо.
MrGluck
Модератор
Эксперт CЭксперт С++
6972 / 4143 / 590
Регистрация: 29.11.2010
Сообщений: 10,994
21.01.2014, 01:03     operator() #5
Цитата Сообщение от Stason676 Посмотреть сообщение
спасибо за ответы, вопрос такой, если функция operator() находится в классе, то при использование объекта этого класса он как бы вызывается как функция? есть статья как и по каким правилам происходит анализ исходных текстов в си++? Спасибо.
Допустим у нас есть структура для сравнения строк
C++
1
2
3
4
5
6
7
struct Comp 
{ 
    bool operator()(const std::string &s1, const std::string &s2) const 
    { 
        return s1.length() < s2.length(); 
    } 
};
Так как для неё определен оператор (), то вызов ниже
C++
1
2
3
4
5
int main()
{
    const std::string s1 = "eniki beniki", s2 = "eli vareniki";
    std::cout << std::boolalpha << Comp()(s1,s2);
}
будет на самом деле рассмотрен как
C++
1
Comp().operator()(s1,s2);
то есть будет вызван конструктор по умолчанию и потом operator() с передачей ему двух строк в качестве аргументов. То же самое можно было бы задать так:
C++
1
2
Comp cmp;
std::cout << std::boolalpha << cmp(s1,s2);
Можете почитать Л.Аммерааль - STL для программистов на C++.
Yandex
Объявления
21.01.2014, 01:03     operator()
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru