Sobes.tech
Junior

C++-ში override რა არის?

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-ისთვის
        // ...
    }
};