MeditatiiDirect.ro Logo
MeditatiiDirect.ro
Educație la un click distanță
MeditatiiMateriiAdmitereTutorialePregatire BACSubiecte BACVariante BACBlog
InformaticăliceuClasa 11dificil

Polimorfism și Funcții Virtuale în C++

Înțelege polimorfismul la runtime folosind funcții virtuale și clase abstracte în C++.

2 luni în urmă
0 vizualizări
35 minute

Polimorfism și Funcții Virtuale în C++

Ce este Polimorfismul?

Polimorfismul permite obiectelor de tipuri diferite să fie tratate uniform prin aceeași interfață.

Funcții Virtuale

1#include <iostream>
2using namespace std;
3
4class Forma {
5public:
6    // Funcție virtuală - poate fi suprascrisă
7    virtual void deseneaza() {
8        cout << "Desenez o forma generica" << endl;
9    }
10    
11    // Funcție virtuală pură - clasa devine abstractă
12    virtual double arie() = 0;
13    
14    // Destructor virtual - OBLIGATORIU pentru clase polimorfice
15    virtual ~Forma() {}
16};
17
18class Cerc : public Forma {
19private:
20    double raza;
21    
22public:
23    Cerc(double r) : raza(r) {}
24    
25    void deseneaza() override {
26        cout << "Desenez un cerc cu raza " << raza << endl;
27    }
28    
29    double arie() override {
30        return 3.14159 * raza * raza;
31    }
32};
33
34class Dreptunghi : public Forma {
35private:
36    double lungime, latime;
37    
38public:
39    Dreptunghi(double l, double L) : lungime(l), latime(L) {}
40    
41    void deseneaza() override {
42        cout << "Desenez un dreptunghi " << lungime << "x" << latime << endl;
43    }
44    
45    double arie() override {
46        return lungime * latime;
47    }
48};
49
50int main() {
51    // Polimorfism prin pointeri la clasa de bază
52    Forma* forme[3];
53    forme[0] = new Cerc(5);
54    forme[1] = new Dreptunghi(4, 6);
55    forme[2] = new Cerc(3);
56    
57    for (int i = 0; i < 3; i++) {
58        forme[i]->deseneaza();
59        cout << "Arie: " << forme[i]->arie() << endl << endl;
60    }
61    
62    // Eliberare memorie
63    for (int i = 0; i < 3; i++) {
64        delete forme[i];
65    }
66    
67    return 0;
68}

Virtual vs Non-Virtual

1class Baza {
2public:
3    void metoda() { cout << "Baza" << endl; }
4    virtual void metodaVirtuala() { cout << "Baza virtuala" << endl; }
5};
6
7class Derivata : public Baza {
8public:
9    void metoda() { cout << "Derivata" << endl; }
10    void metodaVirtuala() override { cout << "Derivata virtuala" << endl; }
11};
12
13int main() {
14    Baza* ptr = new Derivata();
15    
16    ptr->metoda();          // Afișează: Baza (legare statică)
17    ptr->metodaVirtuala();  // Afișează: Derivata virtuala (legare dinamică)
18    
19    delete ptr;
20    return 0;
21}

Clase Abstracte

O clasă cu cel puțin o funcție virtuală pură devine abstractă și nu poate fi instanțiată direct.

1class InterfataComparabila {
2public:
3    virtual int compara(const InterfataComparabila& other) const = 0;
4    virtual ~InterfataComparabila() {}
5};

Tutorialul te-a ajutat?

Dacă ai nevoie de ajutor personalizat, găsește un profesor calificat pentru meditații

MeditatiiDirect.ro Logo
MeditatiiDirect.ro

Platforma educationala din Romania pentru meditatii particulare. Profesori verificati, recenzii reale, inscriere gratuita.

Cauta sau publica anunturi gratuit pentru toate materiile scolare.

Meditatii

  • Meditatii
  • Meditatii Matematica
  • Meditatii Informatica
  • Meditatii Romana
  • Meditatii Engleza
  • Anunturi Meditatii
  • Meditatii Online
  • Ore Online
  • Meditatii BAC
  • Meditatii Bucuresti
  • Meditatii Cluj-Napoca
  • Meditatii Timisoara
  • Meditatii Iasi
  • Meditatii Fizica
  • Meditatii Chimie
  • Meditatii Biologie

Materii Populare

  • Matematică
  • Limba Română
  • Limba Engleză
  • Informatică
  • Fizică
  • Toate Materiile →

Platforma

  • Cum functioneaza
  • Pentru elevi si parinti
  • Pentru profesori
  • Intrebari frecvente
  • Despre noi
  • Publica anunt gratuit

Resurse

  • Profesor Particular
  • Pregatire BAC
  • Admitere Facultate
  • Universitati Romania
  • Facultati Medicina
  • Facultati Informatica
  • Facultati Politehnica
  • Facultati Drept
  • Facultati Economice
  • Facultati Psihologie
  • Grile UPB
  • Grile Medicina
  • Grile Auto 2026
  • Variante BAC 2026
  • Simulare BAC 2026
  • Subiecte BAC
  • Subiecte Admitere
  • Titularizare 2025
  • Tutoriale
  • Blog educational
  • Ore Online
  • Profesori Online
  • Contact

MeditatiiDirect.ro este o platforma educationala din Romania unde gasesti meditatii si profesori particulari verificati pentru matematica, limba romana, engleza, informatica, fizica, chimie si alte materii. Disponibil in Bucuresti, Cluj-Napoca, Timisoara, Iasi si toata Romania, inclusiv meditatii online. Publica sau gaseste anunturi meditatii gratuit, programeaza ore online cu profesori verificati, cauta un profesor particular sau incepe meditatii BAC si admiterea la facultate.

© 2026 MeditatiiDirect. Toate drepturile rezervate.