Почему перегрузка оператора, а не переопределение оператора? - PullRequest
1 голос
/ 14 июля 2020

Перегрузка - это определение нескольких методов с одинаковым именем, но с разным количеством параметров и разными типами данных параметров.

Переопределение - это переопределение функции базового класса в ее производном классе с той же сигнатурой, то есть возвращаемым типом и параметрами.

Для операторов некоторые методы должны быть определены в базовых классах, и когда мы переопределяем эти методы в наших классах, мы называем их перегрузкой операторов. Однако не следует ли это называть переопределением оператора? Кроме того, мы не можем изменять параметры методов, так что перегрузка оператора больше не похожа на переопределение? Я действительно запутался в этой самой базовой c вещи.

1 Ответ

2 голосов
/ 14 июля 2020

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

Перегрузка операторов позволяет вам определять новые операторы. Например, вы можете определить +, который работает с двумя массивами int (при условии, что ваш язык еще не поддерживает это). Если вы думаете об операторе + как о функции, существующие операторы + могут иметь подписи:

double +(double, double)
int +(int, int)
string +(string, string)

Теперь вы добавляете новый оператор:

int[] +(int[], int[])

Эти «функции» имеют одинаковое имя +, но разные параметры. Это похоже на ситуацию с перегрузкой, поэтому языковая функция называется перегрузкой оператора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...