Как работает оператор (). С++

143
23 августа 2019, 10:30

Например у меня есть функция int foo() {return 0;};. И где нибудь в main я буду вызывать foo() , а как оператор () работает в данном случае ?

Answer 1
  • В выражении foo() используется комбинация символов (). Это может быть и оператор вызова функции, и часть синтаксиса приведения типа в функциональной нотации. Компилятор не может определить, что это такое, на основе лишь внешнего анализа синтаксиса.
  • Слева от () находится идентификатор foo. Это приводит к запуску процесса поиска имен (name lookup), который ищет имя foo для того, чтобы выяснить, что же оно из себя представляет. Процесс поиска имен выясняет, что foo - это имя функции. Это значит, что слева от () располагается выражение типа "функция" и что () является именно оператором вызова функции. Также из этого следует, что в данном случае используется встроенный оператор ().
  • Это приводит к запуску процесса разрешения перегрузки (overload resolution), который на основе имени foo и предоставленных аргументов выбирает самую подходящую версию функции foo. В вашем примере аргументов нет, а кандидат всего один. То есть процесс разрешения перегрузки выбирает именно вашу единственную функцию foo.
  • Происходит вызов функции foo. И получение результата, если вы его получаете.

Вот так работает встроенный оператор ().

READ ALSO
Библиотека C++ для быстрого рисования SVG

Библиотека C++ для быстрого рисования SVG

Какая библиотека на C++ существует для рисования SVG? Использовать буду в Qt, а встроенный отрисовщик в Qt не очень шустрый

124
Избыточность оператора delete[] в С++

Избыточность оператора delete[] в С++

Тут я как всегда не вовремя задумался вот над каким вопросомПри выделении памяти из кучи очевидно, что в куче должна сохраняться информация...

102
Какие библиотеки нужны для реализации Android приложения, которое воспроизводит аудио-файлы?

Какие библиотеки нужны для реализации Android приложения, которое воспроизводит аудио-файлы?

Нужна помощь в определении необходимых библиотек, чтобы реализовать приложение в котором будут воспроизводиться музыкальные файлы и различные...

125