Что такое оператор?
Оператор , как правило, представляет собой операцию, выполняемую над переменной с некоторой формой пунктуации.Например, поведение по умолчанию operator+
между двумя целыми числами заключается в добавлении их.
Что такое функция?
A Функция являетсяПодпрограмма - повторно используемый блок кода.
В чем разница между ними?
Ничего, что касается кода пользователя, кроме синтаксиса.Обратите внимание, что если вы переопределите operator||
, operator&&
или (в меньшей степени) operator,
, вы измените семантику встроенной семантики операторов.В случае &&
и ||
вы выполняете операцию, которая обычно является коротким замыканием, в операцию, которой нет.В случае запятой вам нужно убедиться, что вы оцениваете аргументы слева направо, поскольку оператор запятой обычно ведет себя таким образом.
Является ли пользовательский оператор + () функцией илиоператор?
Ни того, ни другого.Это определенная пользователем перегрузка оператора.Имя функции не может начинаться с ключевого слова operator
, а оператор - это просто фактический знак пунктуации, используемый для вызова перегрузки оператора, т. Е. +
или -
. РЕДАКТИРОВАТЬ: Обратите внимание, что, хотя технически это не функция, она имеет семантику вызова функции, как показано в @ превосходный ответ Мартина Йорка .
Может ли оператор работать с операндами во время компиляции?Они всегда работают во время компиляции?(например, sizeof () в C ++)
Нет, sizeof
не может быть перегружен.Если вы хотите, чтобы выполнялась какая-либо форма операции времени компиляции, вам нужно использовать что-то вроде template metaprogramming .Обратите внимание, что если компилятор может выполнять вычисления во время компиляции, он, конечно, может перевести вызов в ваш перегруженный оператор.