Является ли оператор функцией? Например при перегрузке оператора присваивания для определенного класса, мы можем вызвать его как обычную функцию. Но например является ли if функцией и т. д.
Тут терминологическая путаница связанная с переводом английских терминов на русский язык:
if
, while
, ;
и т.д.) — наименьшая автономная часть языка программирования; программная команда. Как туманно говорит стандарт C11¹ (6.8/2): «То что задаёт действие, которое должно быть выполнено».В русской традиции этот термин часто переводится, как оператор.
operator (+
, -
, *
) — это обозначение (symbol), определяющее выполняемую операцию и обладающее собственной лексической и семантической значимостью (перефразировав C11 6.4.6/2).
Для этого используют термин операция.
Так вот, в языке C++ нет перегрузки операторов (statement), есть перегрузка некоторых операций (operator). Также в литературе для перевода этой пары терминов часто используют пару терминов инструкция/оператор соответственно². Собственно из-за этой каши эти понятия часто смешиваются, хотя, о чём именно говорят, часто и так понятно из контекста, надо просто иметь в виду, что это разные вещи.
При этом в С++ ни операторы, ни операции не являются ни функциями, ни методами. Сделать что-то вроде foo.operator+(bar)
можно только для своего типа, но для встроенных типов, например, int
такое не пройдёт.
¹ Стандарт С++ вообще не утруждает себя текстовыми определениями, а просто ограничивается заданием грамматики: stmt.stmt
² Спасибо @Mikhailo за уточнение
Оператор не является функцией.
Подробнее про операторы
https://www.geeksforgeeks.org/operators-c-c/
http://natalia.appmat.ru/c&c++/lezione2.php
https://ravesli.com/urok-17-operatory-v-s/#toc-1
https://en.cppreference.com/w/cpp/language/operators
Есть простая программа, которая должна реагировать на клавишу, и задавать шару ускорение, когда клавиша отпускаеться, шар движется с прежней...
Всем доброго времени сутокВ среде разработке Visual Studio подчёркиваются русские слова
Делаю курсовой проект по теме поиска подстроки в строке с помощью алгоритма Бойера-Мура(Главная строка должна быть больше 255 символов)