Является ли оператор функцией?

264
22 июля 2022, 07:10

Является ли оператор функцией? Например при перегрузке оператора присваивания для определенного класса, мы можем вызвать его как обычную функцию. Но например является ли if функцией и т. д.

Answer 1

Тут терминологическая путаница связанная с переводом английских терминов на русский язык:

  • statement (if, while, ; и т.д.) — наименьшая автономная часть языка программирования; программная команда. Как туманно говорит стандарт C11¹ (6.8/2): «То что задаёт действие, которое должно быть выполнено».

В русской традиции этот термин часто переводится, как оператор.

  • operator (+, -, *) — это обозначение (symbol), определяющее выполняемую операцию и обладающее собственной лексической и семантической значимостью (перефразировав C11 6.4.6/2).

    Для этого используют термин операция.

Так вот, в языке C++ нет перегрузки операторов (statement), есть перегрузка некоторых операций (operator). Также в литературе для перевода этой пары терминов часто используют пару терминов инструкция/оператор соответственно². Собственно из-за этой каши эти понятия часто смешиваются, хотя, о чём именно говорят, часто и так понятно из контекста, надо просто иметь в виду, что это разные вещи.

При этом в С++ ни операторы, ни операции не являются ни функциями, ни методами. Сделать что-то вроде foo.operator+(bar) можно только для своего типа, но для встроенных типов, например, int такое не пройдёт.

¹ Стандарт С++ вообще не утруждает себя текстовыми определениями, а просто ограничивается заданием грамматики: stmt.stmt
² Спасибо @Mikhailo за уточнение

Answer 2

Оператор не является функцией.

Подробнее про операторы

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

READ ALSO
Привязка ко времени в sfml

Привязка ко времени в sfml

Есть простая программа, которая должна реагировать на клавишу, и задавать шару ускорение, когда клавиша отпускаеться, шар движется с прежней...

217
Подчёркиваются русские слова в Visual Studio

Подчёркиваются русские слова в Visual Studio

Всем доброго времени сутокВ среде разработке Visual Studio подчёркиваются русские слова

265
c++ Перебор чисел с плавающей точкой

c++ Перебор чисел с плавающей точкой

Нужно узнать какие числа составляет число N из чисел a и b

221
Программа не работает с кириллицей С++

Программа не работает с кириллицей С++

Делаю курсовой проект по теме поиска подстроки в строке с помощью алгоритма Бойера-Мура(Главная строка должна быть больше 255 символов)

143