Sobes.tech
Junior

Ce este override în C++?

sobes.tech AI

Răspuns de la AI

Suprascrierea (override) este un mecanism în programarea orientată pe obiecte, în care o clasă derivată furnizează propria implementare specifică a unei funcții virtuale declarate în clasa de bază. Când o astfel de funcție este apelată printr-un pointer sau referință la clasa de bază, se va executa implementarea din tipul real al obiectului (derivat sau de bază), în funcție dacă funcția a fost suprascrisă.

Puncte cheie:

  • Se aplică doar funcțiilor virtuale.
  • Semnătura (numele, tipul de returnare, tipurile și numărul de parametri) funcției care suprascrie în clasa derivată trebuie să coincidă exact cu semnătura funcției suprascrise în clasa de bază.
  • Cuvântul cheie override (începând cu C++11) este folosit pentru a indica explicit intenția de a suprascrie o funcție. Compilatorul va verifica dacă funcția din clasa de bază există cu această semnătură și va genera o eroare dacă nu. Acest lucru ajută la evitarea greșelilor de tastare și face codul mai ușor de citit.

Exemplu:

class Base {
public:
    virtual void print() {
        // Implementarea clasei de bază
        // ...
    }

    virtual void display(int x) const {
        // O altă funcție virtuală
        // ...
    }
};

class Derived : public Base {
public:
    // Suprascrierea funcției print din Base
    void print() override {
        // Implementare specifică pentru Derived
        // ...
    }

    // Aceasta nu este o suprascriere, deoarece lipsește const
    /*
    void display(int x) {
        // Eroare de compilare cu override
        // ...
    }
    */

    // Suprascriere corectă a funcției display din Base
    void display(int x) const override {
        // Implementare specifică pentru Derived
        // ...
    }
};