Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

operator() - C++

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

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

Class & operator's |Error: undefined reference to operator - C++
Компилирует нормально, но когда хочу использовать оператор выдает ошибку:undefined reference to 'operator..(Fraction const&, Fraction...

Вызов operator[] через operator[] const - C++
Перелистывал Майерса, наткнулся на код, подскажите пожалуйста почему он советует закомментированный вариант кода, не проще сделать как...

operator char() или operator int() - C++
Здорова госпдо! Снова ничо не ясно как всегда. Разбираю программку из книги Страуструпа, там он описывает класс String в нем есть ...

Реализация operator + через operator += - C++
внутри следующей темы возник вопрос, ответ на который так и не был получен: ...

Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число" - C++
Здравствуйте. Предлагаю заняться арифметикой. Создал прослейший класс, перегрузил операторы сложения и умножения, в конструкторе...

Operator +, operator += — какой через какой реализовывать? - C++
Для class Fraction { // ... public: Fraction operator + ( const Fraction& right ) const; Fraction& operator += ( const...

4
Croessmah
Пришел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,998
Записей в блоге: 3
Завершенные тесты: 1
20.01.2014, 19:17 #2
Цитата Сообщение от Stason676 Посмотреть сообщение
почему иногда впереди него ставится "&" "&operator()
смотря что нужно вернуть
Цитата Сообщение от Stason676 Посмотреть сообщение
и почему "opereator()" используется в функторах.
потому что можно делать так:
C++
1
2
type obj ;
obj() ; //<-- похоже на вызов функции? Отсюда и название функциональных объектов
1
MrGluck
Модератор
Эксперт CЭксперт С++
7511 / 4643 / 700
Регистрация: 29.11.2010
Сообщений: 12,680
20.01.2014, 19:33 #3
Я советую к прочтению сей мануал
1
Stason676
Заблокирован
20.01.2014, 22:43  [ТС] #4
спасибо за ответы, вопрос такой, если функция operator() находится в классе, то при использование объекта этого класса он как бы вызывается как функция? есть статья как и по каким правилам происходит анализ исходных текстов в си++? Спасибо.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7511 / 4643 / 700
Регистрация: 29.11.2010
Сообщений: 12,680
21.01.2014, 01:03 #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++.
2
21.01.2014, 01:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2014, 01:03
Привет! Вот еще темы с ответами:

Чем "operator *=" отличается от "operator *"? - C++
снова застряла, не могу понять, чем этот оператор должен отличаться от оператора*.....? вот он, но это работает только в случае...

Expected init-declarator before "operator".expected `,' or `;' before "operator" - C++
Пример не мой. Пытаюсь у себя запустить и чтото неполучается. Ошибка на строке 24 Expected init-declarator before &quot;operator&quot;.Expected...

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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