Sobes.tech
Junior

C++-də override nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Ob'ekt yönümlü proqramlaşdırmada, override mexanizmi, əsas sinifdə elan edilmiş virtual funksiyanın özünəməxsus tətbiqini təmin edən mexanizmdir. Belə bir funksiya vasitəsilə çağırıldıqda, əsas sinfə və ya törəmə sinfə istinad edən göstərici və ya referens vasitəsilə, obyektin faktiki növünə (törəmə və ya əsas) uyğun tətbiq icra olunacaq, bu, funksiyanın override olunub-olunmamasından asılıdır.

Əsas məqamlar:

  • Yalnız virtual funksiyalara aiddir.
  • Törəmə sinifdə override edilən funksiyanın imzası (ad, geri dönüş tipi, parametrlərin tipləri və sayı) əsas sinifdəki override edilən funksiyanın imzası ilə tam uyğun olmalıdır.
  • override açar sözü (C++11-dən etibarən) funksiyanın açıq şəkildə override ediləcəyini göstərmək üçün istifadə olunur. Kompilyator, əsas sinifdə bu imzaya malik funksiyanın mövcud olub-olmadığını yoxlayacaq və yoxdursa, xəta verəcək. Bu, yazım səhvlərindən qaçmağa və kodu daha oxunaqlı etməyə kömək edir.

Nümunə:

class Base {
public:
    virtual void print() {
        // Əsas sinfin tətbiqi
        // ...
    }

    virtual void display(int x) const {
        // Digər virtual funksiya
        // ...
    }
};

class Derived : public Base {
public:
    // Base-dən print funksiyasını override edir
    void print() override {
        // Derived üçün xüsusi tətbiq
        // ...
    }

    // Bu override deyil, çünki const yoxdur
    /*
    void display(int x) {
        // override ilə tərtib xətası
        // ...
    }
    */

    // Doğru override
    void display(int x) const override {
        // Derived üçün xüsusi tətbiq
        // ...
    }
};