В C++ я могу изменить оператор на определенном классе путем выполнения чего-то вроде этого:
MyClass::operator==/*Or some other operator such as =, >, etc.*/(Const MyClass rhs) {
/* Do Stuff*/;
}
Но с тем, чтобы там быть никакими классами (встроил по умолчанию) в C. Так, как я мог сделать оператор, перегружающийся для просто общих функций?
Например, если я помню правильно, импортирование stdlib.h дает Вам-> оператор, который является просто синтаксическим сахаром для (*strcut_name) .struct_element.
Таким образом, как я могу сделать это в C?
Спасибо.
Обычный старый C не имеет перегрузки оператора в какой-либо форме. «Оператор» ->
для доступа к члену указателя является стандартным C и не вводится никаким файлом заголовка.
Конечно, вы не можете перегрузить операторы в C. Оператор -> является частью языка C, #include не требуется.
Оператор разыменования указателя структуры ->
является частью спецификации C. stdlib.h
не влияет на это.
Встроенные операторы в языке C перегружены . Тот факт, что вы можете использовать двоичный код +
для суммирования целых чисел, чисел с плавающей запятой и выполнения арифметических операций с указателями, является каноническим примером перегрузки оператора .
Однако C не предлагает функций для перегрузки оператора на уровне пользователя. Вы не можете определять свои собственные операторы в C.