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-ի համար
// ...
}
};