Junior
Какво е override в C++?
sobes.tech AI
Отговор от AI
Презаписването (override) е механизъм в обектно-ориентираното програмиране, при който наследеният клас предоставя своя собствена специфична реализация на виртуална функция, обявена в базовия клас. Когато такава функция се извика чрез указател или препратка към базовия клас, ще бъде изпълнена реализацията от реалния тип на обекта (наследен или базов), в зависимост от това дали функцията е била презаписана.
Основни моменти:
- Приложим само към виртуални функции.
- Подписът (име, тип на връщане, типове и брой параметри) на презаписващата функция в наследения клас трябва точно да съвпада с подписа на презаписваната функция в базовия клас.
- Ключовата дума
override(от C++11 нататък) се използва за ясно указване на намерението за презаписване на функция. Компилаторът ще провери дали функцията в базовия клас действително съществува с този подпис и ще даде грешка, ако не. Това помага да се избегнат печатни грешки и прави кода по-лесен за четене.
Пример:
class Base {
public:
virtual void print() {
// Реализация на базовия клас
// ...
}
virtual void display(int x) const {
// Още една виртуална функция
// ...
}
};
class Derived : public Base {
public:
// Презаписване на функцията print от Base
void print() override {
// Специфична реализация за Derived
// ...
}
// Това не е презаписване, тъй като липсва const
/*
void display(int x) {
// Грешка при компилация с override
// ...
}
*/
// Правилно презаписване на функцията display от Base
void display(int x) const override {
// Специфична реализация за Derived
// ...
}
};