Когда вы начнете изучать объектно-ориентированное программирование и в частности языки С или С++, то вы непременно столкнетесь с вопросом: override C — что это такое?
Override в языке программирования C является специальным типом идентификатора, который указывает на переопределение методов. Переопределение методов — это очень удобный и нужный механизм. Его смысл заключается в том, что вы создаете собственный дочерний метод в производственном классе, который повторяет какой-нибудь родительский метод, но со своей спецификацией. То есть перераспределение дает возможность изменять родительский класс до нужной нам функциональности. А при желании метод базового класса может быть и вовсе полностью переписан.
Что значит override в языке C
Если мы хотим переопределить метод, то нам для этого нужно оповестить систему. Для такого оповещения используется слово «virtual». Поэтому «virtual» и «override» идут рядом:
virtual — оповещает систему о необходимости переопределения метода;
override — показывает, что после этого слова идет переопределенный метод.
Часто необходимость переопределения методов возникает случайно. К примеру, на каком-то этапе разработки вы осознаете, что реализация родительского метода работает не так, как вам это надо. Вы понимаете, что родительский метод нужно чуть-чуть доработать. Вы не хотите придумывать новый метод, просто потому что у старого метода отличное название, тогда вы решаете доработать старый. Тут вам и пригодится слово-идентификатор override.
Из всего уже сказанного можно выделить 2 цели, которые преследует это слово override в языке C:
Показать читателю кода, что после этого слова идет переопределенный виртуальный метод.
Показать компилятору, что переопределенный метод — это не новый метод, а усовершенствованный старый.
Что это такое — override в языке C на примере
Приведем простейший пример для понимания работы этого слова-идентификатора.
Итак, допустим, у вас есть некий объект obj, у которого есть функция void hello():
class obj {
virtual void hello(); // Code : printf("Привет!");
}
Также у вас есть дочерний объект obj с функцией hello():
class bar : obj {
// no functions in here but yet, you can call
// bar.hello()
}
В этом случае вы можете вывести: «Привет, мир!», когда функция hello() будет вызываться из объекта bar. Осуществить это можно переопределением метода:
class bar : obj {
virtual void hello() override; // Code : printf("Привет, мир!");
}
Выводы
Override в языке С применять несложно, главное — уловить время и место, когда это необходимо сделать. Использовать такой подход переопределения можно в разных случаях, главное — нужно запомнить, что:
идентификатор override в языке С показывает, что после него используется измененный переопределенный дочерний метод;
если хотите использовать override, то родительский метод обязательно должен быть помечен словом virtual.
Другое